C语言求1到100的和,我的输出怎么老是6356776

Python042

C语言求1到100的和,我的输出怎么老是6356776,第1张

这里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。