10202:字符、字符串与除法常量
题目
演示字符常量与字符串字面量的区别,以及 1 / 2 与 1.0 / 2.0 的区别。
解析
c
#include <stdio.h>
int main(void) {
int character = 'A';
const char *text = "A";
printf("character: %c\n", character);
printf("string: %s\n", text);
printf("sizeof 'A': %zu\n", sizeof 'A');
printf("sizeof \"A\": %zu\n", sizeof "A");
printf("1 / 2 = %d\n", 1 / 2);
printf("1.0 / 2.0 = %.1f\n", 1.0 / 2.0);
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
核心输出为:
text
character: A
string: A
sizeof "A": 2
1 / 2 = 0
1.0 / 2.0 = 0.51
2
3
4
5
2
3
4
5
sizeof 'A' 等于当前实现的 sizeof(int),具体数值不应写死。
解析
'A' 是类型为 int 的普通字符常量,只表示一个字符值。"A" 是 char[2] 字符串字面量,第二个元素是末尾空字符;程序只通过 const char * 读取它,没有尝试修改。
1 和 2 都是 int,所以 1 / 2 使用整数除法,结果向零截断为 0。1.0 和 2.0 都是 double,所以第二个表达式执行浮点除法并得到 0.5。