則q p等於3,但是下面這個程式為何謝謝啦

2022-11-29 17:55:07 字數 830 閱讀 6629

1樓:匿名使用者

while(*t++);

這行,t++執行了四次,每次執行前後*t所對應的字串包含的字元表示如下:

原本:*t='a''b''c''\0',t的地址指向'a'

執行一次t++後:

*t='b''c''\0',t的地址指向'b'

兩次:*t='c''\0',t的地址指向'c'

三次:*t='\0',t的地址指向'\0'

此時,已不符合while的條件(*t不為空),所以迴圈停止,但是t++還要執行一次:

*t= ,t的地址指向'\0'的下一個位置(其實已經溢位了)

然後再執行一次t--;

則 *t='\0',t的地址指向'\0'

此時,*s='a''b''c''\0',s的地址指向'a',由上可見,t-s值得就是兩個指標指向的地址的位置差,不能直接靠數字符數來判斷結果。

另外, while(*t++);改成 while(*++t);輸出結果就會變成2,所以可以很明顯看到應為++後置,所以多做一次t++運算。

2樓:匿名使用者

char *s="abc";

int a;

char *t=s;

while(*t++);//一直取值,知道取到\0後結束while語句,此事*t還要再自加1

t--; //然後t的地址在減一,得到是\0的地址a=t-s; //這裡就是\0的地址-首地址,為3個字元的地址,因為字元只佔一個位元組,所以結果為1

printf("%d",a);

如果while(*(++t));

這樣的話,那麼結果就是2

代數式減去 2x 1等於5x 3x 9則這個代數式是

一個代數式減去 2x 1等於5x 3x 9則這個代數式是5x x 10 已知兩個代數式的和為2a b 4,其中一個代數式為2a,則另一個代數式為 b 4 在括號內填入適當的項 x x 1 x x 1 a b c d a b c d 去括號併合並 2y 3xy x y 2 xy y 2y 3xy x ...

3a74b能被9整除,則a,b分別等於多少

9 3 3 能被3整除的數各位之和也能整除3,因此3 a 7 4 b即14 a b可以整除9。比如2 9 18,那麼滿足a b 4,如32742,33741都可以。再比如3 9 27,滿足a b 13,如39744,38745都可以。4 9 36,36 14 22已經超過20,不可能。3 7 4 a...

A的行列式等於4,B的行列式等於5,則5A 3B的行列式等於多少

這個真不一定,多少都有可能,因為行列式不滿足線性關係 矩陣a乘b的行列式是否等於矩陣b乘a的行列式 相等。首先,矩陣要對應行列式,這說明a b是個方陣。那麼a和b也必須是方陣。然後根專 據矩陣加法的性質屬,矩陣的加法是有交換律的,矩陣的乘法才沒有交換律。所以a b b a。既然a b和b a相等,那...