前言
为什么称为是n+1呢,因为我会持续更新本条博客。
1.“/”与“%”基本用法
除法运算符“/” :二元运算符,具有左结合性。参与运算的量均为整形时,结果为整型,舍去小数。如果运算量中有一个实型,结果为双精度型。
求余运算符“%” :二元运算符,具有左结合性。参与运算的量均为整形。求余运算的结果等于两个数相除后的余数。
“%”的一些注意点:
1.%与/在运算中先后顺序不同,例如;x%y/z与(x%y)/z的结果不同,在 用pow时pow(x%y,3)与pow((x%y),3)的结果也是不同的。
2.“/”通常去掉尾数,而“%”通常用来获得尾数。
2.C语言’\0’的含义
‘\0’是判定字符数组结束的标识,表示这串字符到结尾了;
注意:在字符数组中’0’是占一个位置的!
例如定义char c[6]=“hello”,而在内存中字符数组c则是"hello\0";
即’\0’在数组中占有空间却不被我们看到;
所以如果一个长度为10的字符串要放在字符数组里的话就应该把字符数组的长度定义为11
代码示例:
#include
int main()
{
char s[6]="hello";
int i=0;
while(s[i]!='\0')
{
printf("%c ",s[i]);
i++;
}
printf("\n");
}
输出结果
h e l l o
3.如何把字符1转化成整数1
#include
#include
int main()
{
char i='1';
printf("%d\n",i);
printf("%d",i-'0');
return 0;
}
输出结果
49(49为字符1的acsll码)
1
4.scanf与gets连用时的异常
例如
#include
#include
#include
int main()
{
char n,a[100];
scanf("%c",&n);
gets(a);
printf("%c",n);
printf("%s",a);
return 0;
}
当输入n后按下空格会直接输出n的结果,而没有这是为什么呢?下面来解释一下:
应为当用scanf赋值完按下空格或者回车,会被认为输入结束,而空格和回车被当作字符而没被scanf内变量吸收,会直接作用到gets上,被gets吸收,导致错误。
解决方法:可以在scanf();后加上getchar();或者改为scanf(“%d\n”,&n);
注:当scanf后有scanf("%c")时一样会出现相同异常
5.while(scanf)与while(gets)的正确用法
1. while(scanf()!=EOF)或者while(~scanf())
2. while(gets()!=NULL)
6.字符串比较原理
原理: 从两个字符串的第一个字符开始逐个进行比较(按字符的ASCII值进行大小比较),直到出现不同的字符或遇到‘\0’为止
就跟比较数字一样: 例如 1234 跟 1222 比较一样,第一个位跟第一位数字比,如果相等,看下一位,直到3和2比较,3大于2,这两个数的大小已经很明显了,就不用看下一位了,但是如果位数不同时,就不一样了,比如123 跟1234比较时,在字符中就被看为是1230和1234比较,字符串比较也是这样,只不过比较的是他们各自字符的ascll码。
本文同步分享在 博客“汤米先生”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。