1樓:jiawen廖
(*s++) 解引後得到s指向位置的值,將該值作為表示式的結果,然後s指標往後偏移s++ 即s指標往後偏移*s++ 。
1、編譯器解析到*,判斷為指標運算子號,需要一個標示符或者表示式;
3、繼續解析到++,由於*與++是同一優先順序,結合性為右到左,所以等同於*(s++);
4、然後是=,判斷為賦值運算子,優先順序比++低,因此前面的部分可以直接進行計算。
2樓:姬桐類珠玉
樓上錯了,前面的s如果是變數就是值加1,如果是指標就是地址加1,後面這個是地址加1而不是指向的內容加1,因為++的優先順序高於*,但是注意兩者都是事後加!,也就是說如果是a=*s++的話那麼是先將*s的值賦給a然後地址再加1,s++也是一樣的。
3樓:植皓尾幻巧
s是指標變數嗎
假設s是指標變數,(*s++)就是s包含的指標指向的記憶體空間的值加一。
s++則是表示加上s的基型別佔用的位元組數,例如s是int型別的,佔4個位元組,s++就是其值加4個位元組。
*s++的意義和第一個相同
4樓:匿名使用者
*與++的優先順序相同,結合性都是從右向左,()優先順序大於*與++假定 int a=0,*s=&a;
*s++等價於*(s++) 是指標在自增,結果取得指標所指資料,再s+1
//執行後 a=0,s=s+1 (指標指向別的地址)
(*s)++ 是指標所指資料在自增,結果取得指標所指資料,再指標所指資料+1
//執行後 a=1,s=&a
s++指標自增,不在指向變數a
c語言中(*s++)、s++、*s++之間有什麼區別啊
5樓:匿名使用者
*s++的值是執行自增運算之前s指向的字元,字尾運算子++表示在讀取該字元後才改變s的值
6樓:匿名使用者
*(s++)指標後移一個元素,並取其值
s++指標後移一個元素
*s++指標指向的元素加一
7樓:來自茅巖河雪膚花貌的薄荷草
s是指標變數嗎
假設s是指標變數,(*s++)就是s包含的指標指向的記憶體空間的值加一。
s++則是表示加上s的基型別佔用的位元組數,例如s是int型別的,佔4個位元組,s++就是其值加4個位元組。
*s++的意義和第一個相同
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樓:正在輸入密碼
請問你這道題目是在哪個平臺做的
c語言中s[i]!=''&&(s[i+1]==''||s[i+1]=='\0')是什麼意思?
12樓:匿名使用者
這是兩個條件:
bai
第i(如果i從du1開始)個非空格字元
後跟一zhi個空格。
或者dao第i+1個字元是字內符串結束標記。
這條**容的意思是這兩個條件之一成立即可。
知識延展:&&:邏輯與,前後條件同時滿足表示式為真。
||:邏輯或,前後條件只要有一個滿足表示式為真。
&:按位與。
| :按位或。
區別:
&&和||是邏輯運算,&與|是位運算。
「&&」跟「|」沒有關係,在用「||」的地方一般也可以用|代替,但是用「|」的地方不能用「||」代替。
13樓:傲雪寒梅
複合賦bai
值運算子共 10種
+= 加賦值
du-= 減賦值
*= 乘賦值
/= 除賦值
%= 求餘賦值
&= 按位與賦值
| = 按位或賦zhi值
^= 按位異或賦值
<<= 左移位dao賦值
>>= 右移位賦值
構成複合賦值表示式的一般形式:
變數 雙目運算子=表示式
它等效於
變數=變數 運算子 表示式
s+=i,等價於s=s+i,使用加賦值
不但可以讓**更加簡潔,而且能提高程式的執行效,提高程式的執行速度*(s+i)就是取s上第i個元素的值,等同於s[i]。
'\0'為轉義字元,其ascii碼值為0,在c語言中,是約定的字串結束符。
!=代表邏輯不等於運算,當!=兩側值相等時,值為假,否則值為真。
於是,這個表示式就是判斷s上第i個元素是否為字串結束符,如果是則表示式為假,否則表示式為真。
c語言的a和a有什麼區別,C語言中a與a的區別是什麼詳細一點,謝謝
如果要列印的值 來是a 如printf d a 那打源印出來的只是a的值bai.但是第二次打du 印的a值就 zhi是 後的值.就是先打dao印後 a就是先改變a的值,再列印出來.具體差別你可以自己試著執行比較一下.c語言中a 與 a的區別是什麼?詳細一點,謝謝 a 是先返回a的值,再執行 運算。a...
c語言中檔案路徑和有什麼區別嗎
unix使用斜杆 作為路徑分隔符,而web應用最新使用在unix系統上面,所以目前所有的網路地址都採用 斜杆 作為分隔符。windows由於使用 斜杆 作為dos命令提示符的引數標誌了,為了不混淆,所以採用 反斜槓 作為路徑分隔符。所以目前windows系統上的檔案瀏覽器都是用 反斜槓 作為路徑分隔...
c語言中指標加不加有什麼區別,C語言指標什麼時候加星號什麼時候不加
剛開始學習 baic,同樣有這du個疑問,在網上zhi查了一下,沒 有什麼讓人一目了dao然的解釋。專用int x作為屬 例子。既然int x 只是定義了一個記憶體空間,儲存一個記憶體地址,那麼普通的int x應該也可以做到。int num 5 int x int x1 x 和 x1 同樣儲存的是 ...