您好,欢迎来到九壹网。
搜索
您的当前位置:首页2.6字符型:char

2.6字符型:char

来源:九壹网

2.6.1字符变量的定义和输出  

char的本质就是一个1字节大小的整型
#include<stdio.h>
int main(int argc,char *argv[])
//1、内存中没有字符,只有数字
//2、一个数字,对应的一个字符,这种规则就是ascii
//3、使用字符或数字给字符变量赋值是等级
//4、字符类型本质上就是1个字节大小的整型

//此文中出现单引号是为了方便,不加不影响运行

//字符:‘一个字符’
char ch=’a';
printf("ch1 =%c, ch = %d\n", ch, ch);
ch=97;//以ascii赋值,和ch='a'等价的
printf("ch2 =%c\n",ch);
效果:

//字符,原则上",内部只有一个字符,转义字符除外
//char a='abc';//不合理

//转义字符,由反斜杠\组成的多个字符
  char ch='\n';//换行符
  printf("ffff%c", ch);

2.6.4 数值溢出


2.7实型(浮点型):foat、double

·尽量不要使用,使用不准确
float存储不准确例子:
{
float a=100.9f;
printf("%f\n", a);
return 0;
}
float正确使用方法:
{
float a;
printf("请输入float:");
scanf("%f", &a);
printf("%f\n", a);
return 0;
}
double的使用方法:
{

double b;
b = 3.14;
printf("b = %lf\n", b);
return 0;
}


2.8 类型限定符

限定符                                                            含义
extern                         声明一个变量,sxtexm声明的变量没有建立存储空间。
const                           定义一个常量,常量的值不能修改。const int a= 10;
volatile                      防止编译器优化代码(加上这个,可以防止编译器跳过中间步骤)
register                     定义寄存器变量,提高效率。register是建议型的指令,而不是                                       命令型的指令,如果 CPU有空闲寄存器,那么register 就生                                           效, 如果没有空闲寄存器,  那么register 无效。                                                                             
2.9 字符串格式化输出和输入
2.9.1字符串常量
·定义:字符串是内存中一段连续的char空间,以‘\0'(数字0)结尾

每个字符串的结尾,编译器会自动的添加一个结束标志位’\ 0’,即"a”包含两个字符’ a' 和’\0’

2.9.2 prntf 函数和 putchar 函数

putchar是将内容输出到屏幕
输入之前:edu@edu:-/share/c code/day05$
输入:char ch = 'a';
putcahr(ch);  //把ch的内容输出到屏幕
输出:aedu@edu:-/share/c code/day05$

实现换行:
输入char ch = 'a'
       putchar(ch);  //不可以输入putchar(“ch\n”)来实现换行,因为对于()内的是变量
       //可以输入printf("\n“)来实现换行
        putchar('\n');

2.9.3 scanf函数与 getchar函数
scanf:

输入:int a;
           printf("请输入a:");
           scanf("%d", &a);
           printf("a = %d\n",a);
输出:请输入a:x
                     a = x
输入: int b;
            int c;
            printf("请输入b,c:")
            scanf("%d %d",&b,&c);
            printf("b = %d, c = %d\n",b,c);
输出: 请输入b, c:20 30   //此处输出时需要空一行
            b = 20 c = 30

输入:char a;
          printf("请输入字符a:");
          scanf("%c", &a);
          printf("a = '%c'\n:, a);    //如果代码到这里,则会正常运行

          char b;
          printf(请输入字符b:);
          scanf("%c", &b);
          printf("b = '%c'\n", b);    //如果代码到这里,则会只有上一步的代码正常运行
效果:

//知识点:此处当用户输入字符时,编译器默认把输入的内容先放在一块内存中(缓冲区),scanf()自动在缓冲区读完内容

键盘输入的会进入缓冲区
scanf("%c",&a); 只读一个字符
1、第1次把t取走,留下\n还在缓冲区
2、第2次scanf,由于缓冲区还有内容所以直接取内容,无需输入(相当于第二次把\n这个指令,也就是换行给读取了)

接下来进行第三次输入:
char c;
printf(”请输入字符c:");
scanf("%c, &c");
printf("c = '%c '\n", c);
输出:a = x
           b = y
           c = z
或者:把第二个命令的printf都给删去,为的是吃掉上一步的\n,不做处理
如下:
char b;
scanf("%c", &b );

getchar:

简单理解来说也是输入
a = getchar();  //读取键盘的字符,放在变量a(相当于scanf)
b = getchar;
c= getchar;

输入:char a ;
          printf("请输入字符a:");
          a = getcahr();
          printf("c = '%c'\n, c");
输出: a = x


 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务