1樓:羲和_玄炎
兩重圓括號純屬是多打了吧……
你要是能看懂前面那條語句的話,後面那條語句其實差不多,賦值表示式的值等同於賦值號右端表示式的值,因此在str2[count2]=='\0'的時候括號內表示式的值就是'\0'也就是0,c中不存在布林型別,因此0表示假,非0皆為真。
2樓:何靈淵
while((str1[count1++] = str2[count2++]))
等同於while((str1[count1++] = str2[count2++])!=0)
\0就是0,所以
while((str1[count1++] = str2[count2++])!='\0')
(str1[count1++] = str2[count2++])返回的就是str1[count1++],但是在這個while判斷結束之前,自加沒有進行,所以str1[count1++]就是str1[count1]。
在後面count2++也是事後自加,所以
str1[count1++] = str2[count2++]
就是str1[count1] = str2[count2] 事後count1 count2都自加
然後,由於先進行賦值str1[count1] = str2[count2],然後才判斷str1[count1]是不是\0,所以\0也被賦值了,就不用單獨賦值\0了。
總結,這一句的意思就是先賦值,再判斷str1[count1]是不是\0,然後count1和count2自加。
**大致可以考慮成是這個樣子,更好理解一些:
do //do while使得即使只有一個'\0'也會被複制
while(str1[count1++]!='\0'); //這裡再加count1
3樓:逝水南城
程式以下面的例子來說明:
#include
#include
int main()
執行結果剛好是abcdefg
str1[c1++] = str2[c2++]是一條賦值語句,每次賦值之後這個表示式的值就等於str1[count1++]的值。
因為字串是以『\0』結尾的,總會有str2[count2++]把最後的'\0'賦給str1[count1++],而此時上面的表示式的值為'\0',而『\0』在邏輯表示式裡面相當於false,剛好能使while迴圈終止,完成字串的拼接,最後str1的結尾也是一個'\0'
對於表示式來說一重圓括號也是對的 ,while((str1[count1++] = str2[count2++]))完全可以替換為 while(str1[count1++] = str2[count2++]);,加兩重括號只是使其具有整體性,程式的可讀性更強,(str1[count1++] = str2[count2++])就是一個表示式,while的條件判斷就是根據整個表示式而來的,而這個表示式的值就是str1[count1++]的值。
所以上例子也可以這樣寫:
#include
#include
int main()
4樓:淡季的帥哥
其實你可以反過來想因為,str1[c1++] = str2[c2++]是一條賦值語句,每次賦值之後這個表示式的值就等於str1[count1++]的值。
因為字串是以『\0』結尾的,總會有str2[count2++]把最後的'\0'賦給str1[count1++],而此時上面的表示式的值為'\0',而『\0』在邏輯表示式裡面相當於false,剛好能使while迴圈終止,完成字串的拼接,最後str1的結尾也是一個'\0'
對於表示式來說一重圓括號也是對的 ,while((str1[count1++] = str2[count2++]))完全可以替換為 while(str1[count1++] = str2[count2++]);,加兩重括號只是使其具有整體性,程式的可讀性更強,(str1[count1++] = str2[count2++])就是一個表示式,while的條件判斷就是根據整個表示式而來的,而這個表示式的值就是str1[count1++]的值。
C語言字串問題,C語言中,字串是什麼?
這迴圈需要執行4次,對應的字元就是0001,也就是說這個sc需要5個空間,加一個 0 for i 0 i 2.你這個程式每次執行的結果可能是不確定的,因為你沒有初始化sc陣列,printf以字串的形式輸出,他是遇到 0 字元才結束的,所以為了保證程式的結果是一致的,建議初始化陣列。sc 5 這樣就可...
C語言字串輸出亂碼,C語言,字串輸出是亂碼
輸出來亂碼是必須的,因為你的數源據型別搞錯了bai,你使用的是字元 du函式zhistringcopy 來拷貝字元 那麼要處理的數dao據當是char型別,然而你所定義的指標應當也是char型別 你應當修改的地方是 int str1,str2 請將int改為char 將你程式中的所有int替換為ch...
c語言字元輸出,C語言輸入輸出字串
include int main d輸出的是有符號的整數,超過127的數字,在二進位制的最高位就是1了。那麼在後符號數的首位標記正負。如果是1,就是負數了。具體還是看看補碼運演算法則吧 c語言的字元是ascii編碼 標準的ascii碼只到127吧 沒記清楚 大概是這個數 char 的變數存的值太大直...