1樓:穆雪白狼
mian()
{int x,y,z; /* 定義整形變數x y z */
x=y=z; /* 把變數z的值賦給x和y(這時x y z的值是未知的)*/
z=3; /* 給z賦值3 */
y=x++ -1; prinft("%d\t\%d\t",x,y); /*把x-1的值賦給y,然後x加1,輸出x、y*/
y=++x -1; prinft("%d\t\%d\t",x,y); /*x自加1,然後把x-1的值賦給y,輸出x、y*/
y=z-- +1; prinft("%d\t\%d\t",z,y); /*把z-1的值賦給y,然後z減1,輸出z、y*/
y=--z +1; prinft("%d\t\%d\n",z,y); /*z自減1,然後把z+1的值賦給y,輸出z、y*/
感覺第一句和第二句應該換下位置...
2樓:世鑲柳
x=y=z;z=3; 這不就錯了嗎?
3樓:匿名使用者
這程式有問題
x=y=z;z=3;這裡前面的z還沒賦值 所以x,y是隨機值 應
4樓:匿名使用者
程式有問題,
x=y=z之前沒有符初值。
應該是 x=y=z=3;吧
另外 prinft 寫錯了,應該是 printf
有關c語言i++的++i的問題
5樓:匿名使用者
++i表示先把i加1,然後再參與運算!++i的情況下,++的優先順序最高,因此,一個表示式中,所有的++運算完了之後才進行其他的運算,因此:
第一次先執行++i ++i,這時i=3,因此第一次運算結果為9第二次一樣先執行++i ++i 這時i=5,因此第二次運算結果為25第三次同樣,i=7,運算結果為49
i++是i先參加運算,然後再執行i+1運算!
6樓:w休息的風
你要明白,++i是在表示式中先對i進行加1,表示式裡面有兩個++i,所以算乘法的時候i已經等於3了。以此類推,迴圈三次,結果就是9,25,49。
7樓:仙林的琛珏
先算括號,後算乘號。第一個迴圈,i變成2,再變成3。編譯後變成3*3,5*5,7*7。
8樓:李嘉興
編譯器會掃描一條語句,發現++i執行了2次,就將是兩次的結果啊
關於c語言i++,++i的問題,菜鳥級!!!!
9樓:匿名使用者
先把i的值給printf輸出,然後執行i=i+1。而++i是先做加1的運算,然後再把值給printf輸出
10樓:匿名使用者
i++是輸出i的值,然後再做+1
++i是先+1,然後才輸出值
i++和++i是不一樣的,兩個的計算順序不一樣,i++是先把i輸出,然後才做加1的運算;而++i是先做加1的運算的。
所以你上面++i輸出是9,而i++輸出是8
11樓:匿名使用者
i++是先取i的值,然後再給i賦值。
++i是先給i賦值,再取i的值。
i++在printf中執行是先輸出i的值,然後再把i+1賦值給i。
c語言中i++,++i的運算
12樓:匿名使用者
y+=z--/++x => y=y+z/(x+1)=2+3/2=3, z-- => z=2;
注意,x,y,z是整型的話,3/2=1;沒有小數的。
13樓:匿名使用者
考點一:++i和i++的區別
++i先進行自增再參加運算
i++先參加運算,再自增
考點二:
整數相除取整
分解掉y = y+ z/(x+1); z = z-1;
y = 2+3/2 = 2+1 = 3
所以y等於3
你前面肯定要宣告型別的,不然編譯通不過,如果是題目的話,那就是題目出的不完善
c++中 i++,++i的問題 20
14樓:在晴天的雨傘
主要差異在於返回值,相同點在於對i進行自加:
++i返回的是i自加後的內容,i++返回的是i未自加的內容。
舉個例子:
int i = 10;
a = i++;
vs int i = 10;
b = ++i;
結果分別是 i = 11, a = 10和 i = 11, b = 11。
將i++和++i彙編結果,若沒有使用其返回值賦值特性,結果是一樣的,有返回值差異在於彙編**執行先後(先自加還是先賦值)區別。
另外,關於for(i = 0; i < n; i++)與for(i = 0; i < n; ++i) 有差異的說法是扯淡的。現在我們看到的編譯器,基本都會彙編成相同的**(好像有基本經典教程說有差異,那只是針對古老的編譯器)。
15樓:匿名使用者
++i 是 先 i=i+1, 再讓i參與運算i++ 是先讓i參與運算, 然後 i=i+1,所以p = 5 + 5 + 5, ,i自身連續3次加1,所以i = 5+1+1+1=8
j=5+1+1+1 = 8 , q = 8+8+8= 24所以這個程式的答案是8,8,15,24(不是22)
c語言中 a=(i++)*(++i)*(i++)*(++i)*(i++)
16樓:咎易夢
我研究了一下
第一點:i++是在 它所在的表示式 計算完後再 計算
例如:#include "stdio.h"
void main()
這個程式 不管你有多少個i++ 計算結果都是 1
第二點:優先順序高的 先運算
例如:#include "stdio.h"
void main()
這個程式的結果是 4
因為 ++i的優先順序更高 所以他會先計算 計算後 i的值為2 ,++i的值也是2 所以 a=2 (因為優先順序低所以已經為2了)* 2=4;
第三點 : 同等級的運算是從前往後運算的 並且是連線兩個後 成為一個正確 再往後
現在我們來看一下a=(i++)*(++i)*(i++)*(++i)*(i++);
先由於 由於第一點 我們可以把表示式該為a=i*(++i)*i*(++i)*i;
結果還是72 所以第一點正確
再由於第二第三點 先 運算 i * (++i) 這裡運算結果是 4 i=2
然後 * i 結果為 8 i=2
然後 *i}*(++i) 結果為 24 i=3
然後 *i}*(++i)}*i 結果為 72 i=3
最後 執行所有的 i++ 所以i 的值為6 a的值為72
現在來看一下
#include "stdio.h"
void main()
這個的結果為 2
先 i*i 值為1
再 1 * (++i) 值為 2
所以正確
下面#include "stdio.h"
void main()
這個的 結果是4 也說的通
我也是研究出來的 也不知道 真正的是不是這樣的 。。
願意討論討論
17樓:唐泇三勺
int main()
18樓:執事君的黑貓
i的初值是2嗎?
2*3*2*3*2=72
第一個括弧內先用i的值計算,讓後i=i+1第二個括弧內先i=i+1 然後再參與計算
以下同上
19樓:
i++是說明,先計算,計算後這個i才加1,而++i是說明,先加1,再帶入式中計算
20樓:
請停止你們的譚浩強行為……
c語言輸出問題 關於++i和i++
21樓:阿咕嚕
print是從右到左開始運算的,也就是按這個順序來做i++,++i,i*=2。i++是後置自增運算,也就是先使用然後自己加一,所以i++這裡的值為2,這個運算做完之後,因為自增所以i=3,而++i是前置自增運算,是使用之前加一,所以++i的值就為4,然後進行i*=2,所以i就等於8,最後結果應該是8 4 2
22樓:街角哦祝福
printf("%d %d %d \n",i*=2,++i,i++);
是從右邊開始執行的
輸出結果是8 4 2 吧
所以i++表示式的值為2
++i表示式為 4 (i先前已自增1,這裡又自增了1,且++在前面)
i*=2為8
這種東西只要記住printf裡的語句是從右往左執行然後i++和++i都會是i自增1,不同的是i++是表示式i++的值為i(自增前);而
++i則是i+1,這裡的i也是自增前的
這種語句雖然我們避免寫,可是有的是為了考試,出題考你這點,所以這點雖不要寫但是應該要知道的
23樓:舞林人
printf是從右到左依次輸出,故先執行i++,然後執行++i,最後執行i*=2.
i++是先以i的值進行運算,然後i的值在加1,++i反之。
需要注意的是:當printf整個執行完了之後i++,的++才會執行。
你可以在prinf之後檢視i的值,應當是7.
24樓:匿名使用者
printf是反過來算的,先算i++,再算++i,最後i*=2。
25樓:匿名使用者
能在蛋疼點麼?
對這種結果取決於編譯器的問題就不要問了... 世界上沒有人寫這麼蛋疼的**的...
一頭智商正常的豬都不會這麼寫的啊~
c語言中if和else的用法,C語言裡面if 和else的用法?
include int main if a c if b c n a 100 b 10 c printf d n n return 0 c語言裡面if 和else的用法?if 條件 復 如果條件為真,執行 這制裡 條件為真才執bai行 else 否則du,執行這裡。只要不是真,zhi就執行。dao ...
c語言中int max(int a,int b)和int max(a,b)有什麼區別,搞不懂,請高手
int max int a,int b 是一個很普通的來函式宣告,形參自a,b的型別都是int。int max a,b 在語法上是錯誤的。若看做函式宣告,那麼形參沒有型別,大家都知道,函式宣告時候可以沒有形參變數,但是必須有形參型別,例如 int max int,int 是合法的,所以,上面表示式若...
c語言有關paqp的問題,C語言 有關 p a, q p 的問題
p是一個一維指標,它指向陣列a的第一個元素a 0 p 會先取p當前指向的地址並做解引用得到a 0 元素的值,然後再將p指標移位指向相鄰的下一個元素 即a 1 元素 q是一個二維指標 可以理解為指標的指標 它指向了指標p,所以 q得到的是指標p現在指向的地址 即a 1 q相當於 p,由於上一條語句中,...