1
int a = -10;
printf("%d\n", sizeof a);//这样写行不行?
printf("%d\n", sizeof int);//这样写行不行?
aのサイズは正しい
sizeof intエラー0029、sizeof演算子のパラメータは式である必要があります
二
//代码3-非法表达式
int main()
{
int i = 10;
i = i-- - --i *(i = -3) * i++ + ++i;
printf("i = %d\n", i);
return 0;
}
値 | 翻訳者 |
---|---|
-128 | Tandy 6000 Xenix 3.2 |
-95 | Think C 5.02(Macintosh) |
-86 | RM PowerPC AIX 3.2.5 |
-85 | Sun Sparc cc(K&Cコンパイルトラブル) |
-63 | gcc、HP_UX 9.0、Power C 2.0.0 |
4 | Sun Sparc acc(K&Cコンパイラ) |
21 | Turbo C / C ++ 4.5 |
22 | FreeBSD 2.1 R |
30 | Dec Alpha 0SF1 2.0 |
36 | 12月VAX / VMS |
42 | Microsoft C 5.1 |
i = i-- - --i *(i = -3) * i++ + ++i;
異なるコンパイラで取得される値も異なります
三
//代码4
#include <stdio.h>s
int fun()
{
static int count = 1;
return ++count;
}
int main()
{
int answer;
answer = fun() - fun() * fun();
printf("%d\n", answer);//输出多少?
return 0;
}
ほとんどのコンパイラで得られる結果は同じですが、関数呼び出しの順序を決定することはできません。
四
//代码5
#include <stdio.h>
int main()
{
int i = 1;
int ret = (++i) + (++i) + (++i);
printf("%d\n", ret);
printf("%d\n", i);
return 0;
}
Linux:10 4
ビジュアルスタジオ:12 4
このコードの最初の+が実行されると、3番目の++が実行されるかどうかは不明です。これは、演算子の優先順位と結合性が最初の+と3番目のプリアンブル++の順序を決定できないためです。