在C或c++编程中什么时候应该使用单引号和双引号?
当前回答
单引号用于单个字符。双引号用于字符串(字符数组)。如果您愿意,可以使用单引号一次一个字符地构建字符串。
char myChar = 'A';
char myString[] = "Hello Mum";
char myOtherString[] = { 'H','e','l','l','o','\0' };
其他回答
使用单引号加单字符:
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位值的最高位。显然,如果您正在编写与平台无关的代码,就不应该依赖于此。
虽然我确信这并没有回答最初的提问者所问的问题,万一你最终在这里寻找文字整数中的单引号,就像我有……
c++ 14增加了在数字文字中间添加单引号(')的功能,以便为数字添加一些可视分组。
constexpr int oneBillion = 1'000'000'000;
constexpr int binary = 0b1010'0101;
constexpr int hex = 0x12'34'5678;
constexpr double pi = 3.1415926535'8979323846'2643383279'5028841971'6939937510;
单引号是字符(char),双引号是空结束的字符串(char *)。
char c = 'x';
char *s = "Hello World";
单引号代表性格; 双引号是字符串。
推荐文章
- 未定义对静态constexpr char的引用[]
- 在c++中,restrict关键字是什么意思?
- 如何创建可变参数宏(参数数量可变)
- c++中类似于java的instanceof
- include_directories和target_include_directories在CMake中的区别是什么?
- std::make_pair与std::pair的构造函数的目的是什么?
- 如何追加一个字符到std::字符串?
- 为什么C语言这么快,为什么其他语言没有这么快或更快?
- 转发C中可变函数的调用
- 带有返回类型的Java方法在没有返回语句的情况下编译
- 为什么要在c++中使用嵌套类?
- 如何处理11000行c++源文件?
- 使用g++编译多个.cpp和.h文件
- 当尝试用const初始化变量时,错误“初始化元素不是常量”
- 为什么数组的地址等于它在C语言中的值?