N00B:
私は、コンパイラは次のコードでどのように動作するか、疑問を持っています:
#include<stdio.h>
int main(void)
{
int b=12, c=11;
int d = (b == c++) ? (c+1) : (c-1);
printf("d = %i\n", d);
}
私は結果がある理由はわかりませんd = 11
。
エリックPostpischil:
中int d = (b == c++) ? (c+1) : (c-1);
:
- 値は
c++
現在の値でありc
、11とは別に、c
12にインクリメントされます。 b == 11
以来、虚偽であるb
12です。- 以来
(b == c++)
falseで、(c-1)
使用されています。また、増分のc
12には、この時点で完了しなければなりません。 - 以来
c
12は、c-1
11です。 d
その値、11に初期化されます。