0
unsigned short int uwVal1=-10;short int wVal2=-10;
if(uwVal1==wVal2)
printf("Something");

私の知る限り、符号なしの型が符号付きの型と比較されるたびに、符号付きはそれを符号なしに変換するということです。したがって、そのロジックにより...上記のコードは「何か」を出力するはずです。

私がこれを好きなら...

    printf("%u",wVal2);    

4294967286!...number が出力されます。これは、short int max +range ie65535 よりもはるかに大きい値です。-10 の unsigned 値は 65526 になります。ロジックは私が考えているものとは異なりますか?

4

1 に答える 1

2

はい、ロジックはあなたが考えているものとは異なります。

ロジックは、The Usual Arithmetic Conversionsに関する STL のビデオで完全に説明されています。

(比較では、両側が に昇格されるintため、65526 と -10 を比較しています。)

于 2013-11-04T12:14:50.217 に答える