在C或c++编程中什么时候应该使用单引号和双引号?
当前回答
使用单引号加单字符:
char ch = 'a';
这里'a'是一个char常量,等于char a的ASCII值。
对字符串使用双引号:
char str[] = "foo";
这里的"foo"是一个字符串字面量。
可以用a但不能用foo
其他回答
一些编译器还实现了一个扩展,允许多字符常量。C99标准说:
6.4.4.4p10:“包含更多的整数字符常量的值 多于一个字符(如'ab'),或 包含一个字符或转义 不映射到 单字节执行字符,是 实现定义。”
例如,它可能是这样的:
const uint32_t png_ihdr = 'IHDR';
得到的常量(在GCC中,实现了这一点)的值是通过取每个字符并向上移动它来获得的,这样'I'就会位于32位值的最高位。显然,如果您正在编写与平台无关的代码,就不应该依赖于此。
双引号用于字符串字面量,例如:
char str[] = "Hello world";
单引号用于单字符字面量,例如:
char c = 'x';
正如David在另一个回答中所述,字符字面量的类型是int。
单引号用于字符,双引号用于字符串。
例如……
printf("%c \n",'a');
printf("%s","Hello World");
输出
a
Hello World
如果你在相反的情况下使用这些,并使用单引号字符串和双引号字符,这将是结果:
printf("%c \n","a");
printf("%s",'Hello World');
输出:
对于第一行。你将得到一个垃圾值或意外值,或者你可能得到这样的输出:
�
而对于第二个表述,你什么都看不到。还有一件事,如果你在这之后有更多的语句,它们也不会给你任何结果。
注意:PHP语言为您提供了轻松使用单引号和双引号的灵活性。
声明char / string的不同方法
char char_simple = 'a'; // bytes 1 : -128 to 127 or 0 to 255
signed char char_signed = 'a'; // bytes 1: -128 to 127
unsigned char char_u = 'a'; // bytes 2: 0 to 255
// double quote is for string.
char string_simple[] = "myString";
char string_simple_2[] = {'m', 'S', 't', 'r', 'i', 'n', 'g'};
char string_fixed_size[8] = "myString";
char *string_pointer = "myString";
char string_poionter_2 = *"myString";
printf("char = %ld\n", sizeof(char_simple));
printf("char_signed = %ld\n", sizeof(char_signed));
printf("char_u = %ld\n", sizeof(char_u));
printf("string_simple[] = %ld\n", sizeof(string_simple));
printf("string_simple_2[] = %ld\n", sizeof(string_simple_2));
printf("string_fixed_size[8] = %ld\n", sizeof(string_fixed_size));
printf("*string_pointer = %ld\n", sizeof(string_pointer));
printf("string_poionter_2 = %ld\n", sizeof(string_poionter_2));
单引号表示字符,双引号表示字符串。
在Java中也是如此。
推荐文章
- 为什么这个结合赋值和相等检查的if语句返回true?
- PHP中的三个点(…)是什么意思?
- cplusplus.com给出的错误、误解或坏建议是什么?
- C多行宏:do/while(0) vs作用域块
- 找出质数最快的算法是什么?
- 在c#中转换char到int
- 关键字使用virtual+override vs. new
- time_t最终的类型定义是什么?
- 我需要显式处理负数或零时,总和平方数字?
- c++枚举类可以有方法吗?
- 函数名周围的括号是什么意思?
- 用C语言创建自己的头文件
- 格式化IO函数(*printf / *scanf)中的转换说明符%i和%d之间的区别是什么?
- 将析构函数设为私有有什么用?
- main()中的Return语句vs exit()