08/08/18 06:56:05
符号有/無の変数同士の四則演算についての質問です。
long hoge1=-101;
ulong hoge2=100;
printf("%d",(hoge1+hoge2));
とすると、「-1」が、
if( (hoge1 + hoge2)>0){printf("和が0以上\n")}
とすると、「和が0以上」と表示されました。
結果として、printfは正常、if文は異常な動作をしています。
if( (hoge1 + (long)hoge2)>0)・・・のように
if文中で使用している変数を型を揃えた場合、if文も正常に動作しました。
おそらく、if文中では変数の型を揃えないといけないものと勝手に理解しましたが、
これはC言語の仕様によるものでしょうか?