#include<stdio.h> void main() { char a=""c""; printf("%d\n",sizeof(a)); printf("%d\n",sizeof(""c"")); }
为什么他们的输出是不一样的在C语言中
解决方案:20分
字符型常量一律按整型常量处理,见C标准
§6.4.4.4
10 An integer character constant has type int. The value of an integer character constant
containing a single character that maps to a single-byte execution character is the
numerical value of the representation of the mapped character interpreted as an integer.
The value of an integer character constant containing more than one character (e.g.,
“”ab””), or containing a character or escape sequence that does not map to a single-byte
execution character, is implementation-defined. If an integer character constant contains
a single character or escape sequence, its value is the one that results when an object with
type char whose value is that of the single character or escape sequence is converted to
type int.
§6.4.4.4
10 An integer character constant has type int. The value of an integer character constant
containing a single character that maps to a single-byte execution character is the
numerical value of the representation of the mapped character interpreted as an integer.
The value of an integer character constant containing more than one character (e.g.,
“”ab””), or containing a character or escape sequence that does not map to a single-byte
execution character, is implementation-defined. If an integer character constant contains
a single character or escape sequence, its value is the one that results when an object with
type char whose value is that of the single character or escape sequence is converted to
type int.
解决方案:10分
解决方案:10分
当然可能会丢失,但视情况。
float f = 1.1
int i = f;
这样会丢失,但假如f是1就不会丢失
float f = 1.1
int i = f;
这样会丢失,但假如f是1就不会丢失