c - 为什么这段代码会有输出?

标签 c type-conversion

我想知道为什么this code 的输出什么都没有?是否与 for 循环表达式中使用 SIZE 有关?

代码

#include<stdio.h>
int array[6] = {4, 5, 6, 10, -1, 0};
#define SIZE (sizeof(array)/sizeof(array[0]))
int main() {
    int i;  
    for (i= -1; i< SIZE; ++i)  printf("%d", array[i+1]);
    return 0;
}

最佳答案

for (i= -1; i< SIZE; ++i)  printf("%d", array[i+1]);

相反,在循环中将 i 初始化为 0 -

for (i= 0; i< SIZE; ++i)  printf("%d", array[i]);

为什么你没有得到任何输出,因为由于有符号和无符号整数之间的比较(转换 -1,循环不迭代 unsigned int 结果是一个非常大的值,因此条件为假)。

关于c - 为什么这段代码会有输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34808036/

相关文章:

c - 将 scanf 与 char 数组及其大小一起使用

C++ for each,隐藏类型转换

c - C中什么时候发生类型转换

java - Java中将数字从字符串转换为整数时的随机负数

arrays - 为什么不能在 Go 中将 [Size]byte 转换为字符串?

ios - 我在哪里可以找到 libsystem_c.dylib 的源代码?

c++ - eclipse CDT : doesn't show name a macro appears in

c - 如何在 C 中计算大文件的 MD5 哈希值?

C char 数组 v C char* 初始化

c++ - C++类型转换类成员运算符问题