这里printf这句的&sum要改成sum,&sum是指变量sum所在的地址
修改后的代码如下:
#include <stdio.h>int main() {
int i=1
int sum=0
while (i<=100) {
sum +=i
i++
}
printf("和:%d",sum)
return 0
}
执行效果如下:
编译器是不会加65536的,其实内存存储的都是一样的,-20就是FFEC,也就是1111 1111 1110 1100,这样有符号就是-20,无符号就是65516。
编译器会尽可能用一个合适的类型去存放a+b,
所以你没有把a+b的值赋值给一个特定类型的变量时,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
它的结果就是无符号的,所以会大于6,如果你写成
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int temp = a+b
(temp>6)?puts(">6"):puts("<=6")
则应该会输出<=6
所以你改成unsigned a = 6int b = -12也没用
这是一段C语言代码,它初始化一个int数组a,并定义了两个指针p和q,分别指向数组a的第0个元素和第8个元素。随后,在for循环中,比较了数组a中的三对相邻元素:(a[0],a[8]),(a[1],a[7])和(a[2],a[6])。如果两个元素相等,则将它们的乘积赋值给变量x。
因此,循环第一次执行时,a[0]和a[8]相等,为1,因此x被赋值为1 * 2 = 2。循环第二次执行时,a[1]和a[7]相等,为2,因此x被赋值为2 * 2 = 4。循环第三次执行时,a[2]和a[6]相等,为3,因此x被赋值为3 * 2 = 6。由于循环只运行了3次,因此最终的x的值为6。
因此,程序执行后,x的值为6。