c語言菜鳥求教whilet中t如何理解是

時間 2021-09-05 20:01:52

1樓:匿名使用者

*與++運算子優先順序相同,且都是從右往左結合。

對於*t++,可以這樣理解(本人拙見,非官方,非權威),先t與*結合,結果是取值,等同於*t,因為++是後置的,所以再與++結合,結果是指標增1,等同於t++。那麼*t++的意思是,先取值,後更新指標。

2樓:匿名使用者

這個要看編譯器,不同編譯器的結合方向會不同,如果編譯器的結合方向是從左往右結合,那麼*t++相當於(*t)++;

如果編譯器的結合方向是從右往左結合,那麼*t++相當於*(t++);

我們實際運用當中,一般要看自己的需求,遇到這種情況根據自己的需求把括號加上去,這樣可以增加可讀性,同時也避免因為編譯器的不同導致產生不同的結果;

如果你看的是考試的題目,這個只能死記了,多留意一些往年類似的題目,看它考的題目以及答案是按照編譯器從哪個方向編譯的,然後在進行作答。

3樓:匿名使用者

優先順序相同的情況下還要看結合性,這兩個操作符的結合性是從右往左的,意思是:如果一個運算元兩邊的操作符優先順序相同,那麼先與右邊的結合,所以*t++就是*(t++)

c語言中*t++ 和(*t)++分別代表什麼

4樓:

*t++其實就是*(t++),先取*t,然後t這個指標再後移一位。

(*t)++就是先取*t,把*t這個值再++,就是*t這個值自增1。

*t++是取值後指標自增,(*t)++是取值後把取出來的值自增。

c語言是一種計算機程式設計語言,它既具有高階語言的特點,又具有組合語言的特點。它由美國貝爾研究所的d.m.

ritchie於2023年推出,2023年後,c語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程式,也可以作為應用程式設計語言,編寫不依賴計算機硬體的應用程式。

它的應用範圍廣泛,具備很強的資料處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到c語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如微控制器以及嵌入式系統開發。

5樓:糖二灰

*t++就是*(t++),也就是先取*t,然後t這個指標在後移一位

(*t)++就是先取*t,然後把*t這個值再++,就是*t這個值自增1,

前一個是取值後,指標自增,後一個是取值後,把取出來的值自增。

6樓:nix張

a = *t++ : a = *t;t++;指標指向的值不變,指標自加

a = (*t)++ : 指標不變,指標指向的值+1

7樓:懶蛋看家

用一個例子來解釋:

int *t[2]=;

" *t++,++的優先順序大於*,先進行t自增,這時t為下一個元素的首地址,*t[0]++=*t[1] "

" 而(*t)++,先進行「 * 」(「指向」)再自增,(*t[0])++表示3++

c語言中while(*s++=*t++)等價於什麼?

8樓:匿名使用者

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

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

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

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

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

故答案選擇b

9樓:匿名使用者

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;

10樓:劉文正粉絲

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

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

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

再看c,

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

11樓:正在輸入密碼

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

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

12樓:匿名使用者

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

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

13樓:

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

14樓:匿名使用者

先賦值:*t = *s

while(*t != 0)

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

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

15樓:匿名使用者

說起來複雜,直接改寫一個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指向地址都會往後移動一位。

16樓:人世間沒有天堂

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

17樓:匿名使用者

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

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

18樓:匿名使用者

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

再把s和t都++

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

while((*t) != 0)

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

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

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

19樓:

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

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

while(*s=*t,*s)

20樓:

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

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

c語言中*t++ 和(*t)++分別代表什麼?

21樓:

*t++其實就是*(t++),先取*t,然後t這個指標再後移一位。

(*t)++就是先取*t,把*t這個值再++,就是*t這個值自增1。

*t++是取值後指標自增,(*t)++是取值後把取出來的值自增。

c語言是一種計算機程式設計語言,它既具有高階語言的特點,又具有組合語言的特點。它由美國貝爾研究所的d.m.

ritchie於2023年推出,2023年後,c語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程式,也可以作為應用程式設計語言,編寫不依賴計算機硬體的應用程式。

它的應用範圍廣泛,具備很強的資料處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到c語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如微控制器以及嵌入式系統開發。

c語言中,while(*t++);等價於什麼?它先算什麼後算什麼?

22樓:

等價於baiwhile(t=t+1,*(t-1));——我只是說while(t=t+1,*(t-1));和while(*t++);功能du完全一樣zhi

。而while(*t++);是先判斷dao*t是不是0,然後再

內t=t+1,而且無論*t是否為真,t=t+1都要執行容。

c語言菜鳥

我簡單看了一下 第一 if 30 i 6237 10 i 3 3564 錯誤應該是在這句 不但條件有問題,而且還在條件成立時執行了一個空語句,把分號去掉,改為 if 30 i 6237 10 i 3 3564 注意賦值符號和等號的區別,你寫的是賦值符號!第二 程式構成了一個死迴圈,break僅僅是跳...

新手求教c語言問題,新手求教C語言問題

在 unix中,eof表示能從互動式 shell 終端 送出 ctrl d 習慣性標準 在微軟的 dos 與 windows 中能送出 ctrl z。在某些例子處理純文字檔案或從 字元裝置 讀入資料,微軟ms dos的 shell 或系統程式會加入 ascii control z 字元到磁碟檔案結束...

C菜鳥求教大神 C中如何按引數名稱從字串中擷取特定的引數值 (就是資料分割,這個複雜,符號雜亂)

你這個是json字串,不能單純的去用string的拼接取值。1 會很麻煩,2 如果是複雜型別的json 比如有個list在裡面 你是取不到正確的值的。c 解析json有很多方式,推薦一種c 自帶的 net 3.5以後支援 1 引用dll system.web.extensions.dll.引用名稱空...