1.设m和n都是int类型,那么以下for 循环语句 循环体一次也不执行
int main()
{
int m,n=-1;
for (m = 0,n=-1; n=0; m++,n++)
{
n++;
}
system("pause");
return 0;
}
n=0的值是0,也就是说条件一直为FALSE,所以一次也不会执行。
2.如下程序输出结果是什么
int a = 1;
void test()
{
int a = 2;
a += 1;
}
int main()
{
test();
printf("%d\n", a); // 1
system("pause");
return 0;
}
int main()
{
int y = 10,x;
x = y++;
printf("%d,%d", x, y); //10 11
system("pause");
return 0;
}
int main()
{
int i = 0;
int j = 0;
if ((++i > 0) || (++j) > 0)
{
printf("i=%d ,j=%d\n", i, j);// i=1 j=0
}
system("pause");
return 0;
}
++i,i=1>0,(++i>0)||(++j>0)为真,不再执行++j>0,j仍为0。
#define MOD(x,y) x%y
int main()
{
int a = 13, b = 94;
printf("%d\n", MOD(b, a + 4));//7 b%a+4
system("pause");
return 0;
}
int main()
{
int x = 0;
switch (++x)
{
case 0:++x;
case 1:++x;
case 2:++x;
}
printf("x=%d\n", x);//3
system("pause");
return 0;
}
1. switch结构分支没加break;跳出语句,开始执行后,程序由x=1调到case 1 分支 ++x,由于没有break语句,程序继续执行到case 2 分支 ++x,之后程序printf输出x=3
3. char a;int b;float c;double d;表达式a*b+d-c的类型为double。
自动向精度大的那个类型转换,doubule的精度最大。依次增大char ,int ,float ,double 。