所以一个int是四个字节,我只是不明白C在这种情况下如何知道这个工作
随机函数显示我的意思
char strl[20];
int c, i=0;
puts("Enter a string up to 19 characters");
while((i<20) && (c=getChar())!="\n")
strl[i++]=c;
答案 0 :(得分:3)
C不是一种强类型语言,这种隐式转换很常见。
C11 draft standard 6.5.16.1中的这个例子与你的非常相似:
int f(void);
char c;
/* ... */
if ((c = f()) == -1)
/* ... */
函数返回的int值在存入时可能会被截断 char,然后转换回int宽度之前 比较。
所以这个行为定义得很好。
编辑:我意识到上述情况可能不是最佳示例,因为实施将定义从int
到char
的转换(如果char
默认为unsigned
}或signed
)。但是,它仍然表明这是定义的行为,而不是未定义。