一、char的+'0'
如果你想把一个数字8转化为字符串‘8’,你要怎么做?
废话不多说!直接上代码
#include <stdio.h>
int main()
{
char b;
int a = 8;
b = a + '0';
printf("%c\n",b);
printf("b的字节大小:%d\n",sizeof(b));
return 0;
}
我们可以看到输出结果中虽然还是8,但是它的类型其实已经变了,变成char类型了,因为char类型的字节是1.
我们是根据ASCLL码表对应,‘8’对应的是56,而‘0’是48,我们加上一个8刚好是56,ASCLL中56对应的字符‘8’。
二、零值,空指针值或空成员指针值将转换为false;其他任何值都将转换为true。
因为之前学习的是Java,所以一开始容易把负数也下意识以为是false。
三、a=3 b=6 进行交换 按位操作进行交换 进行异或操作
方法一:开辟新的一个内存空间,然后进行存值。
temp = a;
a = b;
b = temp;
方法二:不开辟新的内存空间,进行交换(非常有意思)
a = a + b;
b = a - b;
a = a - b;
方法三:进行按位运算的换算(只适用于整数,因为要转换成二进制的)
a = a ^ b
b = a ^ b
a = a ^ b
四、如何接收char类型的数据?
#include <stdio.h>
2
3 int main()
4 {
5 char ch;
6 int i;
7 printf("请输入一个字符:\n");
8 scanf("%c",&ch);
9 for (i=0;(ch=getchar( ))!='\n';i=i+ch)// 循环读取输入的字符,直到遇到换行符
10 {
11 printf("%c",ch); // 打印每个字符
12 }
13
14
15 return 0;
16 }
~
getchar()
函数在读取输入时会将输入的字符放入输入缓冲区中,程序通过不断读取缓冲区中的字符来获取用户输入,直到缓冲区为空。当按下 Enter 键时,输入的字符会被依次放入缓冲区,其中换行符 '\n' 也会被存储在缓冲区中,表示输入行的结束。