单个字符 用 单引号括起来 多个字符 用 双引号括起来 C语言所有的字符串 只要是双引号 后面都有个\0 就算双引号里面有一个字符串 那也相当于 一个字符串和一个\0 所以 char 类型 要用单引号 表示 单引号只能括单个字符 双引号 只能扩多个字符
变量不能重复定义 下面是错误的
char i = 'a';
char i = 'b';
这样写是对的 只是把变量重新赋值
char i = 'a'
;
i = 'b';
如果用%d整形方式输出字符串 会把字符串二进制转换成十进制 然后输出字符串的ASCII 码
ASCII 不是一个值 是一种规定 规定了 不同的字符是用哪个整数值来表示
十进制 转换 十六进制
随便拿出一个十进制数“120”,(假如你今天捡了120元)。120是我们现实生活中所用10进制表达出来的一个数值,转换成十六进制数十多少? 商 余数 步数 120/16= 7 8 第一步 7/16= 0 7 (这里的7是第一步运算结果的商) 第二步 @4 那么十进制数120转换成16进制数就是78,既120(10)=78(16)。
int 最大值 2147483647
为什么要输出控制符 因为 变量本身是二进制 要指定二进制以什么格式输出
printf('%daaaaaa',a) 输出字符串 可以带格式
printf("输出字符串"); printf('hello word');
printf('输出控制符',变量参数); printf("%d\n",i);
printf("输出控制符1 输出控制符2",变量1,变量2); printf("%d %c",i,a); 控制符 和变量 个数 必须匹配
%d 数字 int
%(m)d 以多少位输出 不够补空格 够了就输出原来的位数
%ld 输出长整形的字符 long int
%o 以8进制输出 前面如果加# 就是加个前导零 055 这样更像八进制
%lo 长整数8进制输出
%x 以16进制输出
%X 16进制的字母 大写
%#x|X 16进制前面加个0x int long int
%u 用来输出 unsigned 类型的数 无符号 十进制输出
%c 用来输出一个字符 一个整数 在0~255以内也可以用c 来输出 反之字符串也可以用整数输出 系统会自动输出对用的ASCII码 char
%s 用来输出一个字符串 字符串
%m.ns 输出m个字符 但是只输出n左边的 printf("%3.3s","abcdefg");
%f 输出实数 小数 单精度 双精度 float
%m.nf 输出m个数据 有n个小数如果超过m则左端补空格
%e 以指定形式输出小数
%g 用来输出小数 随机选择f e 并不会输
scanf
输入控制符 和输入参数必须一一对应
功能:将从键盘上输入的字符 转换成输入控制符规定的数据 然后以存入以输入参数的值为地址的变量中去
scanf("输入控制符","输入参数");
scanf("非输入控制符 输入控制符","输入参数"); 非输入控制符 必须原样输入 然后才可以输入输入控制符
int i;
scanf("%d",&i);
printf("i == %d\n",i);
& 表示取地址符 &i 表示这个变量的地址
int i;
scanf("m%d",&i);
printf("i == %d\n",i);
return 0;
这样子 必须先输入个m才能输入数字 一般来讲 不需要加个非输入控制符
scanf("%d %d",&i,&j);
printf("i = %d ,j == %d\n",i,j);
输入多个变量 输入了一个 然后按下回车才能输入另一个
scanf("%d,%d",&i,&j);
printf("i = %d ,j == %d\n",i,j);
这样子 必须输入 1,2 才行的
非输入控制符必须原样的输入 scanf后面不要带\n 不染不会解析 你必须输入字符串 \ n
int i,j;
printf("请写2个整型,中间以逗号分隔:");
scanf("%d,%d",&i,&j);
printf("i = %d ,j == %d\n",i,j);
写 scanf之前最好前面要输出点东西
这样引申出一个问题 如果用户在数字后面输入了 垃圾字符 那怎么判断呢
scanf("%d",&i);
printf(" i = %d\n",i);
/*
while(ch = getchar() != '\n')
continue;*/
ch = getchar();
printf("%c",ch);
scanf("%d",&j);
printf("j = %d\n",j);
可以 检测下 用户输入的数字后面是不是就是 回车了 如果不是回车 就跳出当前循环 直到遇到回车