c語言中while st等價於什麼

2021-03-11 06:58:21 字數 3133 閱讀 1924

1樓:匿名使用者

*s++=*t++//這是一個賦值語來

句,返回值是源*s++因此,bai括號裡的一定是du*s

while語句的停止條件zhi是表示式

不成立。但既dao然while判斷了表示式,那表示式的結果就會被運算一次,而每運算一次會讓*s++,*t++。也就是說,在退出迴圈的時候,s和t還加了1。

但是c選項中,只有*s不為0才會讓*s++,*t++。所以最後一次沒有加。

故答案選擇b

2樓:匿名使用者

while(*s++=*t++)

這裡實現了bai四個操作。

1 *s = *t, 即將

dus指向記憶體

zhi賦值為t指向記憶體的值

dao;

2 執行回s的自加

答操作;

3 執行t的自加操作;

4 判斷執行自加前的*s值,如果*s為0,那麼退出迴圈。

可以寫成等價的for迴圈。

for(; *s; s++, t++)

*s = *t;

3樓:劉文正粉絲

因為, c它是. 如果s指向的變數為0, 那*s, 就是假.那麼*s++=*t++就不會執行.

但是, while(*s++=*t++)它是先把t自加版後的值(不清權楚是先自加還是先取值), 然後賦給*s++, 那麼*s的值就是*t++的值了, 所以while是否迴圈取決於*t++的值.

而while(*s)它明顯是取決於*s

再看c,

do while是必然先執行的, 然後再判斷是否繼續迴圈, 所以這時*s++就等於*t++了

4樓:正在輸入密碼

請問你這道題目是在哪個平臺做的

while(*s++=*t++)是什麼意思?

5樓:匿名使用者

說起來複雜,直接改寫一個do-while迴圈就好理解了:do while(*s++);

如果硬要解釋原程式的話回,那表示的是指標t所指答向陣列的元素賦值給s所指向陣列,並且t指標和s指標向後移動一位。具體來說:

先將*t的值賦給等號左邊,然後t指向地址往後面移動一位。

因為++自增運算表示的一些特殊性,s++表示的是s自增之前的地址,故*s++表示的還是原來的地址上的值(也就是原來的*s),這時候就會被賦值為*t(在t指標還沒移動前的值)。

while迴圈判斷*s的值是否是0,不是0就進入迴圈,並且s指向位置後移。如果是0,出迴圈,s指向位置依然後移一位。

注意:不管這個while迴圈進不進入,s和t指向地址都會往後移動一位。

6樓:人世間沒有天堂

while裡的條件表來達式是把自指標t所指的值賦給指標s所指向bai的空間。如du果這個值不zhi為0,則繼續執行while語句裡dao面的程式,並且s指標和t指標加1.直到這個值為0時,跳出迴圈。

7樓:匿名使用者

不斷的將t字串中的字元複製到s字串中,直到t字串結束,跳出while迴圈。

此時t已經指向字串的最後面了。

8樓:匿名使用者

這種來**在c裡很常見的。while(*s++=*t++);先賦值,自

再把s和t都++

while(*s++=*t++); 在語義上等同於(注意條件部分是一個=,不是2個):

while((*t) != 0)

顯然前者更緊湊,效率(可能)更高。

如果s和t是字元指標的話,就是字串拷貝

為什麼在判斷條件裡面用賦值呢? c語言的特色呀,緊湊迴圈體怎麼是空的?字串拷貝呀,目的已經達到了,所以是空的

9樓:

非常危險的操作,那個指標都不知道指去哪了

while(*s++=*t++)相對於

while(*s=*t,*s)

10樓:

while(*s++=*t++)相當於

while((*s)=(*t),s++,t++)

while((*t++=*s++)!=0)在c語言中的意思

11樓:匿名使用者

先將s指的值賦給t,再看t是否不等於空,是則執行while下面的語句,否則跳出while迴圈!

示例如下,長度為5,所以只有前五次不等於空,所以只輸出了五個ok:

12樓:

從句法上分析,先將*s 的值賦給*t 因為賦值表示式的值為左邊的值,所以接下來判斷*t != 0。最後再執行*t++, *s++。

13樓:匿名使用者

先賦值:*t = *s

while(*t != 0)

s指向下一個,t指向下一個

c語言中,邏輯表示式是一個賦值語句時候是真還是假while(*t=*s){t++;s++}什麼時候執行?不執行?

14樓:倒黴熊

賦值表示式的返回就是等號左邊的值,也就是說

while(*t=*s) 的意思是將 *s賦值給*t,然後判斷*t是真還是假。

到*s =0或*s='\0'的時候,這個迴圈就不成立,否則while迴圈成立。

15樓:匿名使用者

while(*t=*s)中的條件判來斷是*t=*s,而該表源達式bai是du一個賦值表示式,而該表示式的返回值是賦值後左值的zhi

值,即dao賦值後*t的值作為該表示式的值,用它作為邏輯判斷,規則是賦值後*t的值為非0時為真,賦值後*t的值為0時則為假。

16樓:匿名使用者

表達bai式也是有值的,邏輯表示式

du的值zhi

是邏輯判定結果dao大家都懂的。。內但是這裡用容賦值表示式來代替了邏輯表示式,一個賦值表示式的值實際上是賦值號右邊的值,這裡就是*s的值,c語言中,只有0和null會被判定為false,不為0的值在這種判定中都被判為true

17樓:匿名使用者

每個資料都對應一個地址

當地址t和地址s內的數相等時執行

地址t和地址s加1繼續比較直到不相等為止

比如執行完後 t=102 s=88

c語言中ainj表示什麼意思等價於a

就是將陣列a的首地址加上後面的偏移。如果這個陣列的每個元素都是一個位元組,並且第一維的長度是n,那麼與a i j 等價。a i n j 0 在c語言中這個語句是什麼意思啊 因為 你給的資訊才少的,所以,我給你的分析是 a i n j 我的猜測都是整型變數,你應該知道,p 1就是,就是在p指向的那個地...

c語言中 5 2等於多少,c語言中1 2等於多少

2。執行一下 不就知道了 include include int main void 2兩個整數相除得出的還是整數。c語言中1 2等於多少 1 2 1.意思就是1整除2後餘數是多少。打個比方1個蘋果,但是你每次只能拿2個,1 2,你拿了0次2個蘋果,還剩1個蘋果。類似3 2 1,3個蘋果中你能拿走1...

c語言中103等於多少,C語言中1039等於多少

1 答案是27 2 解釋 在c語言中,斜槓 代表除號,當其左右兩邊都是整型時,表示整除,即 專商為屬整數。本題中10 3的結果為3 3 程式設計驗證 include int main 執行結果如下 一個負數 mod一個正數,返回值為一個負數 一個負數mod一個負數,返回值還是回一個負數一個正答數mo...