#3265: ++跟--運算子?


genius0615 (長長長長長長長長長長長長長長長長整數)


#include<iostream>
using namespace std;
int main(){
 int num[5]={0,1,2,3,4};
 int top=3;

 cout<<num[--top]<<" "<<num[++top];
 
 system("pause");
}

以上程式碼在本機會輸出 2 3

上傳ZJ後顯示輸出3 3

難道ZJ跟Dev有編譯不同的運算規則?

請各位大神明察實情

#3268: Re:++跟--運算子?


b821213 (後繼無人)


#include
using namespace std;
int main(){
 int num[5]={0,1,2,3,4};
 int top=3;

 cout<<<" "<
 
 system("pause");
}

以上程式碼在本機會輸出 2 3

上傳ZJ後顯示輸出3 3

難道ZJ跟Dev有編譯不同的運算規則?

請各位大神明察實情


不太可能

--x 是先運算後求值

x--是先求值後運算

這都是規定在C標準裡面的東西

不管是DEV還是TURBO 還是什麼都一樣

不可能會有第二種規則

首頁也明講了主機是採用DEV-C

可能你還要回去再看看

也許是其他問題

#3275: Re:++跟--運算子?


david942j (文旋)


#include
using namespace std;
int main(){
 int num[5]={0,1,2,3,4};
 int top=3;

 cout<<<" "<
 
 system("pause");
}

以上程式碼在本機會輸出 2 3

上傳ZJ後顯示輸出3 3

難道ZJ跟Dev有編譯不同的運算規則?

請各位大神明察實情


不太可能

--x 是先運算後求值

x--是先求值後運算

這都是規定在C標準裡面的東西

不管是DEV還是TURBO 還是什麼都一樣

不可能會有第二種規則

首頁也明講了主機是採用DEV-C

可能你還要回去再看看

也許是其他問題

測試過了

genius0615說的沒錯

ZJ真的有這種問題

不信你自己上傳看看

測試後發現ZJ編譯器似乎會把top--跟--top都當成top--來運算

#3277: Re:++跟--運算子?


leopan0922 (zz)


#include
using namespace std;
int main(){
 int num[5]={0,1,2,3,4};
 int top=3;

 cout<<<" "<
 
 system("pause");
}

以上程式碼在本機會輸出 2 3

上傳ZJ後顯示輸出3 3

難道ZJ跟Dev有編譯不同的運算規則?

請各位大神明察實情


不太可能

--x 是先運算後求值

x--是先求值後運算

這都是規定在C標準裡面的東西

不管是DEV還是TURBO 還是什麼都一樣

不可能會有第二種規則

首頁也明講了主機是採用DEV-C

可能你還要回去再看看

也許是其他問題

測試過了

genius0615說的沒錯

ZJ真的有這種問題

不信你自己上傳看看

測試後發現ZJ編譯器似乎會把top--跟--top都當成top--來運算


這問題害我風鈴WA好多次= =
#3283: Re:++跟--運算子?


b821213 (後繼無人)


#include
using namespace std;
int main(){
 int num[5]={0,1,2,3,4};
 int top=3;

 cout<<<" "<
 
 system("pause");
}

以上程式碼在本機會輸出 2 3

上傳ZJ後顯示輸出3 3

難道ZJ跟Dev有編譯不同的運算規則?

請各位大神明察實情


不太可能

--x 是先運算後求值

x--是先求值後運算

這都是規定在C標準裡面的東西

不管是DEV還是TURBO 還是什麼都一樣

不可能會有第二種規則

首頁也明講了主機是採用DEV-C

可能你還要回去再看看

也許是其他問題

測試過了

genius0615說的沒錯

ZJ真的有這種問題

不信你自己上傳看看

測試後發現ZJ編譯器似乎會把top--跟--top都當成top--來運算


這問題害我風鈴WA好多次= =


是喔...因為很少用--n所以不曉得

既然這樣 希望板大可以在首頁註明

不然會有更多的人吃了很多苦...

#3365: Re:++跟--運算子?


magrady (元元)


以上程式碼在本機會輸出 2 3

上傳ZJ後顯示輸出3 3

難道ZJ跟Dev有編譯不同的運算規則?

 


不能在一個運算式中,對一個基本型態的變數修改其值超過一次以上。否則,將導致未定義的行為。
#3366: Re:++跟--運算子?


magrady (元元)


 

不能在一個運算式中,對一個基本型態的變數修改其值超過一次以上。否則,將導致未定義的行為。

#include<stdio.h>
main(){
    int n=3,m=3;
    printf("%d ",n++);
    printf("%d ",++m);
    printf("(%d %d)\n",n,m);
}
 
您的答案為:3 4 (4 4)
#3373: Re:++跟--運算子?


david942j (文旋)


以上程式碼在本機會輸出 2 3

上傳ZJ後顯示輸出3 3

難道ZJ跟Dev有編譯不同的運算規則?

 


不能在一個運算式中,對一個基本型態的變數修改其值超過一次以上。否則,將導致未定義的行為。


原來是這樣唷

所以以後要避免這問題(記)

不過ZJ跟Dev對這種情況做的判斷不同也是事實吧><"

#3375: Re:++跟--運算子?


magrady (元元)


以上程式碼在本機會輸出 2 3

上傳ZJ後顯示輸出3 3

難道ZJ跟Dev有編譯不同的運算規則?

 


不能在一個運算式中,對一個基本型態的變數修改其值超過一次以上。否則,將導致未定義的行為。


原來是這樣唷

所以以後要避免這問題(記)

不過ZJ跟Dev對這種情況做的判斷不同也是事實吧><"


編譯器可以自己決定要怎麼做沒定義的行為XD。

噢...MinGW跟GCC/G++另一個常看到的相異處就是%I64d(u)/%lld(u)