-
结果是正确的。
这里需要明确的是,++i 和 i++,问题 (--similar) + 之前是 ++ 操作,然后是 i 计算,然后是 ++。
现在分析你的主题。
x 是 x 变成 1 然后比较,当然也是真的。 y 变为 4 步骤 2:2>0&&2<5 y 变为 3
第 3 步:1>0&&3<5 y 变为 2
步骤 4:0>0&&4<5 无效。
x=3, y=2, z=0
-
你没事。 从循环条件(z-->0&&+x<5)可以看出,变量z是第一个不满足条件的变量,因为它在三个循环后将不满足条件z-->0。 如果不满足这些条件,循环将退出。
由于总共只有三个周期,我可以看到 x=x+3=0+3=3,y=y-3=5-3=2,z=z-3=3-3=0
-
什么是z-->0? 问题。
-
房东你好。
p 是 0x5f00,如果按 %p 打印 p,它应该是 00005f00(32 位系统)。
p+2 是 x+2,即 7。 (注意 * 的优先级高于 +,先取值再取 +2) **p 是 x 是 5(*& 实际上是偏移量)。
3**p 是 3*x 是 15
p+4 是一个地址,按理说应该按照 %p 打印,如果按 %d 打印,应该换成十进制0x5f00,即 24320,然后是 +4*sizeof(int),即 24320+4*2=24328。 (请注意,这里的 p+4 和 4 是 sizeof(int) 的 4 倍)。
所以最终结果应该是。
00005f00 7 5 15 24328 我相信我的结果是正确的。
实验:包括
void main()
输出:0012ff44 7 5 15 1245012 这是用 x 的地址是 0x12ff44 和 int 是 4 个字节来计算的,这是完全相同的。
-
0017fac0 7 5 15 1571536
您可以自己交换 x 的地址。
-
i=1 j=1 1%2! =0,j+2=3,i++i=2 j=3 3%2! =0,j+2=5,i++i=3 j=5 5%2!
0,j+2=7,i++i=4 j=7 7>5,休息
所以答案是 4,7
-
那里是 i++。
第一次执行是 j+=2;j=3 第二次弹出这个循环 i=1 或执行 j+=2 j=5 弹出这个循环 i=2 或执行 j+=2 j=7 弹出这个循环 i=3 第四个 j>5 建立退出循环 j=7 i=4 四个循环 i 加到 4。
-
y=4,z=16,k=32 是一个逗号表达式,里面的表达式依次执行,结果是执行后最后一个表达式的值,这里赋值所有值后,结果是 k=32,即返回 32,然后 32 赋值给 x,所以打印 32。
-
在 C 语言中,系统会首先在编译时为变量赋值,在定义 int 变量时,系统会自动将 int 变量赋给 -858993460,这通常在 Visual C++ 中编译时提示。
例如,以下 C 语言**:
#include
void main()
int a;没有为 int 变量赋值。
printf("%d",a);
输出: -858993460
要改变这一点,你需要养成给变量提供初始值的习惯,比如在 C 中
#include
void main()
int a=0;将初始值 0 分配给 int 变量。
printf("%d",a);
输出: 0
-
%c 表示接受字符 %d 表示整数。
-
1,2 呃。 指向第一个元素。
-
int x=2,y=2,z=0,a;
a=++x ||y &&z++;因为 && 的优先级是比较的 ||,所以 ++y&&z++ 是首选
因为 ++ 在操作中前面是 +1,而 ++ 本身后面是 +1,所以可以得到 3&&0=0;y=3,z=1
然后计算 ++x ||0=>3 ||0=1,x=3,所以你可以得到 a=1;
printf("%d,%d.%d ",x,y,z);输出为 x=3, y=3, z=1;
-
开始:c[4]=
步行 1 次:i=0,c[4]=
2 次步行:i=1,c[4]=,3 次:i=2,c[4]=,4 次步行:
i=3,c[4]=,5次:i=3,c[4]=,6次:i=3,c[4]=,7次:
i=3,c[4]=,8 次步行:i=3,c[4]=,
while(x++<5),先和5比较,再加1,所以6也打印出循环,跳出循环后,x=7,再加2不是9!