单引号和双引号在C中的意义完全不同,在一些混乱的上下文中它们会导致奇怪的结果
而不是错误消息。 包围在单引号中的一个字符只是书写整数的另一种方法。这个整数是给定的字符在实现
的对照序列中的一个对应的值。因此,在一个ASCII实现中,'a'和0141或97表示完全相同 的东西。而一个包围在双引号中的字符串,只是书写一个有双引号之间的字符和一个附加
的二进制值为零的字符所初始化的一个无名数组的指针的一种简短方法。 线面的两个程序片断是等价的:
printf("Hello world\n");
ar hello[] = { 'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd',
'\n', 0 };
printf(hello);
使用一个指针来代替一个整数通常会得到一个警告消息(反之亦然),使用双引号来代 替单引号也会得到一个警告消息(反之亦然)。但对于不检查参数类型的编译器却除外。 因此,用
printf('\n'); |
|