首页 > 编程语言 >C/C++ 字面常量的注意事项

C/C++ 字面常量的注意事项

时间:2024-08-01 09:08:17浏览次数:12  
标签:字符 常量 后缀 C++ long 注意事项 字符串 字面

在 C/C++ 中使用字面常量时,有几个重要的注意事项需要考虑,以确保代码的准确性和可移植性。下面是一些关键要点:

  1. 整数字面量
    • 默认情况下,整数字面量是int类型。如果字面量的值超出了int的范围,它将被视为long intlong long int,这取决于它的值和编译器。
    • 可以在整数字面量后添加Ll后缀来明确指定它为long类型,或使用LLll后缀指定为long long类型。
    • 使用Uu后缀表示无符号类型,例如unsigned int
  2. 浮点数字面量
    • 默认情况下,浮点数字面量是double类型。
    • 使用Ff后缀可以指定字面量为float类型,而Ll后缀表示long double类型。
  3. 字符和字符串字面量
    • 字符字面量(如'a')是单引号括起来的单个字符,而字符串字面量(如"hello")是双引号括起来的字符序列。
    • 字符串字面量实际上代表了一个以null字符('\0')结尾的字符数组。
  4. 布尔字面量
    • C++(但不是 C)支持布尔字面量truefalse
  5. 转义序列
    • 在字符和字符串字面量中,可以使用转义序列(如'\n'表示换行,'\t'表示制表符)来表示无法直接在代码中出现的字符。
  6. 字面量的类型和大小
    • 需要注意字面量的类型和大小,以避免隐式类型转换导致的意外行为或数据丢失。
  7. 可移植性
    • 在不同的编译器和平台上,字面量的处理可能略有不同。为了编写可移植的代码,应明确指定字面量的类型,并避免使用依赖于特定平台行为的代码。
  8. 十六进制和八进制字面量
    • 十六进制字面量以0x0X开头,八进制字面量以0开头。

遵循这些注意事项可以写出更清晰、更可移植和更健壮的 C/C++ 代码。

更进一步地,可参见下列文章,详细介绍字面常量的使用要点:

  1. 转义字符的反斜杠不可误写成斜杠
  2. 在字符常量中用转义字符表示制表符和控制字符
  3. 在字符串常量中用转义字符表示制表符和控制字符
  4. 8 进制或 16 进制转义字符不应与其他字符连在一起
  5. 不应使用非标准转义字符
  6. 不应连接不同前缀的字符串常量
  7. 字符串常量中不应存在拼写错误
  8. 常量后缀由应由大写字母组成
  9. 无符号整数常量应具有后缀 U
  10. 不应使用非标准常量后缀
  11. 禁用 8 进制常量
  12. 小心遗漏逗号导致的非预期字符串连接
  13. 不应存在 magic number
  14. 不应存在 magic string
  15. 不应使用多字符常量
  16. 合理使用数字分隔符
  17. 不应使用宏定义常量
  18. C 格式化字符串应为常量

 

标签:字符,常量,后缀,C++,long,注意事项,字符串,字面
From: https://www.cnblogs.com/lucky-bubble/p/18335922

相关文章

  • Oracle INSTR和LIKE转换注意事项
     OracleINSTR和LIKE转换注意事项 A式:INSTR(A.G_NO||',',B.G_NO||',')>=1和B式:INSTR(A.G_NO,B.G_NO)>=1等价吗不等价,1、B.G_NO有空值的情况,假设A.G_NO也为空值,则A式为','和','比较是成立的,即空值和空值是符合的,而B式则不符合假设A.G_NO='XXXX',则A式为�......
  • c++ 从txt读取数据 按照特殊字符拆分 gnss
      CMakeLists.txtcmake_minimum_required(VERSION3.10)project(ReadTextFile)#设置C++标准为C++11set(CMAKE_CXX_STANDARD11)set(CMAKE_CXX_STANDARD_REQUIREDTrue)#添加可执行文件,并链接主程序文件和自定义类的头文件add_executable(mainmain.cpp)......
  • 从C++看C#托管内存与非托管内存
    进程的内存一个exe文件,在没有运行时,其磁盘存储空间格式为函数代码段+全局变量段。加载为内存后,其进程内存模式增加为函数代码段+全局变量段+函数调用栈+堆区。我们重点讨论堆区。进程内存函数代码段全局变量段函数调用栈堆区托管堆与非托管堆C#inta=1......
  • 高精度加法、减法、乘法、除法(C++)
    1、引入在进行大整数运算中,因为在C++/C中整数,最大也就是unsignedlonglong也就才(1e19+8e18)位,如果要几百位的相加减就不行了,所以就要用高精度了,这里只在C++/C上使用有价值,在例如python、Java语言上无需写此算法,python可以无限大,Java里有相关库可以引入。2、入门的思路即为......
  • 基于VScode和C++ 实现Protobuf数据格式的通信
    目录1.Protobuf概述1.1定义1.2Protobuf的优势2.Protobuf语法3、序列号和反序列化3.1.pb.h头文件3.2序列化3.3反序列化4、测试用例Protobuf详细讲解链接1.Protobuf概述1.1定义protobuf也叫protocolbuffer是google的一种数据交换的格式,它独立于语......
  • UE4 C++ 多人游戏中的简单聊天窗口
    本质不管是客户端还是服务器在输入文字后,按下回车发送,将触发RPC调用。然后通过RPC将发送者,输入文本等信息,传入到服务器,然后通过多播RPC传播到所有客户端的聊天框。UIUI利用三个组件ScrollBox用于在服务器以及每个客户端上显示消息的载体TextBlock本地将信息通过一个一个的T......
  • Linux下C++动态链接库的生成以及使用
    目录一.前言二.生成动态链接库三.使用动态链接库一.前言这篇文章简单讨论一下Linux下如何使用gcc/g++生成和使用C++动态链接库(.so文件)。二.生成动态链接库先看下目录结构然后看下代码//demo.h#ifndefDEMO_H#defineDEMO_H#include<string>classDemo{......
  • 【C++BFS算法 二分查找】2812. 找出最安全路径
    本文涉及知识点C++BFS算法C++二分查找LeetCode2812.找出最安全路径给你一个下标从0开始、大小为nxn的二维矩阵grid,其中(r,c)表示:如果grid[r][c]=1,则表示一个存在小偷的单元格如果grid[r][c]=0,则表示一个空单元格你最开始位于单元格(0,0)。在......
  • 【C++】构造函数的深入学习
    一、初始化列表C++提供初始化列表语法用来初始化属性语法:构造函数():属性1(值1),属性2(值2)...{}classPeople{public://传统初始化操作Person(inta,intb,intc){A=a;B=b;C=c;}//初始化列表初始化属性Pers......
  • 【C++】对象模型和this指针
    一、成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上①C++编译器会给每一个空对象分配一个字节的空间,为了区分空对象占内存的位置classPerson{}voidtest(){PersonP;//空类(类中什么也没有)中的空对象所占内存空间为1cout<<sizeof(P......