c语言 为什么i%3cn 1,c语言中n+1个基础且容易出错的知识点
前言
為什么稱為是n+1呢,因為我會持續(xù)更新本條博客。
1.“/”與“%”基本用法
除法運算符“/” :二元運算符,具有左結(jié)合性。參與運算的量均為整形時,結(jié)果為整型,舍去小數(shù)。如果運算量中有一個實型,結(jié)果為雙精度型。
求余運算符“%” :二元運算符,具有左結(jié)合性。參與運算的量均為整形。求余運算的結(jié)果等于兩個數(shù)相除后的余數(shù)。
“%”的一些注意點:
1.%與/在運算中先后順序不同,例如;x%y/z與(x%y)/z的結(jié)果不同,在 用pow時pow(x%y,3)與pow((x%y),3)的結(jié)果也是不同的。
2.“/”通常去掉尾數(shù),而“%”通常用來獲得尾數(shù)。
2.C語言’\0’的含義
‘\0’是判定字符數(shù)組結(jié)束的標識,表示這串字符到結(jié)尾了;
注意:在字符數(shù)組中’0’是占一個位置的!
例如定義char c[6]=“hello”,而在內(nèi)存中字符數(shù)組c則是"hello\0";
即’\0’在數(shù)組中占有空間卻不被我們看到;
所以如果一個長度為10的字符串要放在字符數(shù)組里的話就應該把字符數(shù)組的長度定義為11
代碼示例:
#include
int main()
{
char s[6]="hello";
int i=0;
while(s[i]!='\0')
{
printf("%c ",s[i]);
i++;
}
printf("\n");
}
輸出結(jié)果
h e l l o
3.如何把字符1轉(zhuǎn)化成整數(shù)1
#include
#include
int main()
{
char i='1';
printf("%d\n",i);
printf("%d",i-'0');
return 0;
}
輸出結(jié)果
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的結(jié)果,而沒有這是為什么呢?下面來解釋一下:
應為當用scanf賦值完按下空格或者回車,會被認為輸入結(jié)束,而空格和回車被當作字符而沒被scanf內(nèi)變量吸收,會直接作用到gets上,被gets吸收,導致錯誤。
解決方法:可以在scanf();后加上getchar();或者改為scanf(“%d\n”,&n);
注:當scanf后有scanf("%c")時一樣會出現(xiàn)相同異常
5.while(scanf)與while(gets)的正確用法
1. while(scanf()!=EOF)或者while(~scanf())
2. while(gets()!=NULL)
6.字符串比較原理
原理: 從兩個字符串的第一個字符開始逐個進行比較(按字符的ASCII值進行大小比較),直到出現(xiàn)不同的字符或遇到‘\0’為止
就跟比較數(shù)字一樣: 例如 1234 跟 1222 比較一樣,第一個位跟第一位數(shù)字比,如果相等,看下一位,直到3和2比較,3大于2,這兩個數(shù)的大小已經(jīng)很明顯了,就不用看下一位了,但是如果位數(shù)不同時,就不一樣了,比如123 跟1234比較時,在字符中就被看為是1230和1234比較,字符串比較也是這樣,只不過比較的是他們各自字符的ascll碼。
本文同步分享在 博客“湯米先生”(CSDN)。
如有侵權(quán),請聯(lián)系 support@oschina.cn 刪除。
本文參與“OSC源創(chuàng)計劃”,歡迎正在閱讀的你也加入,一起分享。
總結(jié)
以上是生活随笔為你收集整理的c语言 为什么i%3cn 1,c语言中n+1个基础且容易出错的知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 23中设计模式之抽象工厂模式
- 下一篇: Linux命令sngre,linux g