1樓:匿名使用者
你用gets讀入乙個字元陣列之後,a中儲存就是你輸入的字元的ascii碼(你可以看看ascii表),如果想以%d輸出,就需要用原本的字元減去'0'或者減去48,就可以得到實際的數字,比如說字元'9',在ascii表裡它的值為57,減去'0'或者減去'0'的ascii碼48,就可以得到實際的數字9。這種運算也經常被用到用於大寫字母的轉換,比如說ch是小寫字母,那麼ch-'a'+'a'就可以得到大寫,同樣,比如'c'=='a'+2這種也是成立的。
當然,如果你把%d改為%c,就不需要減去'0'了
2樓:三天打魚
這個'0'是字元 不是數值0 你差一下ascii字元**
或者 printf("%d",'0') 看看輸出幾
c語言中,i=*p-『0』是什麼意思
3樓:匿名使用者
該p必為乙個char型指標,若指向乙個char型變數,則表示該變數儲存的值與字元'0'的差值,若指向乙個char型陣列,則表示他指向的陣列的第乙個元素值與字元'0'的差值,並將該差值賦值給變數i。
一般情況下該語句用於將字元'0'~'9'轉換為int型資料的0~9。
4樓:匿名使用者
p是乙個指標,*p是他所指向的內容,這裡p是char 型別的指標,所以*p實際上就是乙個字元,比如'a'
'0'在這裡也是乙個字元(用單引號括起來的都是乙個字元char型)
由於對於c語言來講,字元是用ascii碼表示的,也就是說乙個字元是乙個0~255的整數,'0'的ascii碼是48,'1'的ascii碼是49。。。
所以*p-'0'實際上可以寫成*p-48
由於你的str裡面全部是字元型的數字,因此實際上i=*p-'0'實際上是把這些字元轉換成整數
比如*p指向'3'的時候,因為'3'的ascii碼是51,所以*p-'48'就等於整數3
所以整段程式的意思是吧你的乙個只包含數字的字串str中的每乙個字元轉換成整數放在a[i]中
5樓:匿名使用者
3樓ok
樓主問的就是*p指向位址的值減去'0'的ascii碼的值48,結果賦值給i
6樓:我所詮釋的
把指標變數指向變數的位址值賦給i變數
7樓:屈鸞禹迪
第一句話是錯誤的,應該為:p=
&原因是&是取位址運算子,&是變數amp在記憶體中所佔用的位址,對於乙個指標型變數而言,p是指指標變數p中儲存的位址,*p是指變數所指的位址中的資料。例如amp的記憶體位址0x1234,其中的資料是9876,那麼p表示0x1234,*p表示9876。
0&是指0和amp執行「與」操作,結果為0。
c語言中!='\0' 是什麼意思
8樓:過兒兒兒兒兒兒
!='\0'.就是執行到字串結尾時結束。
!的意思是非,亦可以理解成不。『\0』是字串的結束符號,由編譯器自動加上。
比如說,把乙個字串賦值給陣列:u8 str1=;實際上陣列str1在記憶體中的實際存放情況為: c x j r .
2 1 i c . o r g '\0' 這後面的'\0'是由c編譯系統自動加上的。
所以在用字串賦初值時一般無須指定陣列的長度, 而由系統自行處理。 把字元陣列str1中的字串拷貝到字元陣列str2中。串結束標誌'\0'也一同拷貝。
但是……也有一些例外情況發生。比如,當陣列長度不夠。假設我們指定了陣列長度,如:u8 str1[13]=;由於字元組str1的長度為13,所以後面的資訊會丟失,即'\0'丟失。
另外,如果在給陣列賦值時,把每個字元單獨用引號括起來。也會丟失'\0'。如:
u8 str1=;如果希望陣列以'\0'結束,則要麼寫成:u8 str1=;要麼寫成(人工新增'\0'):u8 str1=;要麼寫成(故意給陣列預留乙個空位):
u8 str1[14]=;。
9樓:小莫
在c語言中,!='\0' 是沒有結束的意思。
其中,!=是關係運算號,\0(空字元)是字串的結束碼。
例如:char s = "10";
printf("%s\n", s);
printf("s[1]:%d\n", s[1]);
printf("s[2]:%d\n", s[2]);
printf("s[1]:%c\n", s[1]);
printf("s[2]:%c\n", s[2]);
char u = ;
cout << sizeof(u) / sizeof(*u) << endl;
char v = "hello";
cout << sizeof(v) / sizeof(*v) << endl;
列印結果如下圖:
擴充套件資料:
在c語言中,運算子總共包括以下十類:
1、算術運算子
用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求餘(或稱模運算,%)、自增(++)、自減(--)共七種。
2、關係運算子
用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。
3、邏輯運算子
用於邏輯運算。包括與(&&)、或(||)、非(!)三種。
4、位操作運算子
參與運算的量,按二進位制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
5、賦值運算子
用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6、條件運算子
這是乙個三目運算子,用於條件求值(?:)。
7、逗號運算子
用於把若干表示式組合成乙個表示式(,)。
8、指標運算子
用於取內容(*)和取位址(&)二種運算。
9、求位元組數運算子
用於計算資料型別所佔的位元組數(sizeof)。
10、特殊運算子
有括號(),下標,成員(→,.)等幾種。
10樓:靠名真tm難起
!='\0' 是沒有結束的意思。\0(空
字元)是字串的結束碼。例如:在求字串長度時,有一句是while (ch[i++]!='\0')
當字元ch[i++]不等於結束符'\0'時.字串最後都會有乙個結束符,例如,
char a[100];
scanf("%s",a);
你輸入字串china之後,那麼字串陣列中a[0]=='c',a[1]=='h'.a[5]=='a' a[6]=='\0'
11樓:匿名使用者
字串都是以'\0'結束的,如
char str[6]="hello";
而在記憶體中則是"hello\0"
即你申請了6個空間,但只能用5個,最後乙個用來放'\0'。表示字串結束。
例如下面乙個查詢str末尾的程式
while(*str != '\0')
有時也可以把'\0'直接放在字串末尾,用來表示該字串結束。如:
char str[10];
for(i=0;i<5;i++)
str='\0';
希望對你有用
12樓:雙魚婦聯鋼鐵俠
這是c語言中的if巢狀,寫成這樣你或許就認識了:
if(x }意思就是x 如果滿足x 13樓:匿名使用者 if(z=y>0)表示: 第一步:z=y>0理解為:z=(y>0);即y>0則z=1,否則z=0 第二步: z不為0,則if的條件為真,否則為假 14樓:匿名使用者 是邏輯表示式,用於判斷變數y的內容是否為0 當y的內容為0,表示式的計算結果為真(即結果為1) 若y的內容為非零值,表示式的計算結果為假(結果為0) 15樓:匿名使用者 字元裡面的數字0 char a = 『0』;//a這個字元裡面裝的就是0當我們要把乙個字元格式的數字轉化為整型數字時,可以這樣用: char a = '7'; int b = a - '0';//b = 7 同理·數字加『0』可轉化為字元 16樓:匿名使用者 '0'的意思就是字元0,跟'a' '#'的意思一樣。可以用來將字串形式儲存的數字(如4251)乙個乙個轉化成數字,原理就是字元'4''2''5''1'跟'0'在ascii中的值得差就是4、5、2、1,再用乙個變數number,number = character - '0' + 10 * number,就能用number儲存四千五百二十一了。 17樓:匿名使用者 !的意思是非,亦可以理解成不。『\0』是字串的結束符號,由編譯器自動加上。!='\0'.就是執行到字串結尾時結束。一般用在迴圈之中。比如 #include main()} 18樓:紫晨心戀 '0'是字元常量,在ascii(美國標準資訊交換**)字符集中,數字『0』的**是48,運用不同的格式,其作用也不同,要求輸出值為\d型別是其值可代表為48,為\c型別時其值為0等等用法 19樓:隨楓輕逝 \0是字串結束符,!號的意思是非,既取反,如果有語句!=\0,那它的意思就是:字串沒有結束 20樓:匿名使用者 是判斷該字元是否是乙個字串的結尾 在c語言中是乙個取餘數的符號 在本題中1 10就是1 10後取餘數,而1不夠除以10,所以取商等於0,根據餘數 被除數 除數 商 1 10 0 1,即得餘數為一 所以輸出1 1除以10不夠除,又把1還回來了 同理,2除以10,也不夠除,所以餘數還是原來的2 1 10 0.1 請複習數學知識 是求餘 ... c語言要跳出所有迴圈,可以使用goto語句。在所有迴圈外,定義乙個標識,通過goto語句直達該標識,起到跳出所有迴圈的作用。比如while 1 exit all loop 跳出迴圈後需要執行的語句 不過,在結構化程式設計中並不推薦使用goto語句,所以如果goto被禁用,有跳出所有迴圈的需求時,可以... 表示為取餘,5 10的值為0。中除數與被除數都須為整數。3 2為 1,3 2為1。取餘後的結果與被除數的符號一致。x 5 x 5 5 x 5 5 2 5 3 5 3 在c語言中type怎麼使用 typedef常用抄來自定義型別,比如 typedef int a 那麼你就可以使用a去定義int形的變數...c語言中1101怎麼理解,c語言中110為什麼會是1啊,還有210為什麼是2。。請回答者說的簡單易懂點。
c語言中怎樣跳出所有迴圈,c語言中break怎麼一次退出多個迴圈
c語言中752,為什麼,在C語言中type怎麼使用