当前位置:首页 > 技术 > 正文内容

C++常量与运算符解析

访客 技术 2026年6月27日 1

常量

常量是程序中固定不变的值表达式。

字面量

字面量是直接在代码中表示特定值的常量表达式。

整数字面量

2000      // 十进制
0370      // 八进制
0x7d0     // 十六进制

整数字面量默认为int类型,可使用后缀改变类型:

42U       // 无符号整型
100L      // 长整型
2048ULL   // 无符号长长整型

浮点数字面量

3.1416    // 标准表示
6.626e-34 // 科学计数法
2.0       // 带小数点的整数值

浮点字面量默认为double类型,后缀改变类型:

3.14f     // 单精度浮点
1.414L    // 扩展精度浮点

字符与字符串字面量

'A'                 // 字符
"Hello"             // 字符串
"Multi" "line"      // 拼接字符串
u8"UTF-8文本"       // UTF-8编码
R"(原始\n字符串)"    // 原始字面量

转义序列示例:

'\t'     // 制表符
'\x21'   // 十六进制ASCII值

其他字面量

bool valid = true;     // 布尔真值
bool invalid = false;  // 布尔假值
int* ptr = nullptr;    // 空指针

类型化常量表达式

const float PI = 3.14159;
const char TAB = '\t';

int main() {
  float radius = 3.0;
  float area = PI * radius * radius;
  cout << area << TAB;
}

预处理器宏定义

#define MAX_WIDTH 1024
#define LINE_BREAK '\n'

int main() {
  int display = MAX_WIDTH - 100;
  cout << display << LINE_BREAK;
}

运算符

赋值运算符

int val1, val2;
val1 = 15;       // 直接赋值
val2 = val1;     // 变量间赋值
int x = y = 10;  // 链式赋值

算术运算符

int sum = 8 + 3;    // 加法
int diff = 8 - 3;   // 减法
int prod = 8 * 3;   // 乘法
int quot = 8 / 3;   // 除法
int rem = 8 % 3;    // 取模

复合赋值运算符

int total = 10;
total += 5;   // 等价 total = total + 5
total *= 2;   // 等价 total = total * 2

自增与自减

int counter = 5;
int pre = ++counter;  // 先增后赋值 → pre=6, counter=6
int post = counter--; // 先赋值后减 → post=6, counter=5

关系运算符

bool check1 = (10 > 8);   // true
bool check2 = (5 == 3);   // false
bool check3 = (7 >= 7);   // true

逻辑运算符

bool cond1 = true && false;   // AND → false
bool cond2 = true || false;   // OR → true
bool cond3 = !true;           // NOT → false

条件运算符

int max = (a > b) ? a : b;  // 返回较大值
string msg = (score >= 60) ? "通过" : "未通过";

位运算符

unsigned flags = 0x0F;
flags &= 0xFE;    // 位清除
flags |= 0x40;    // 位设置
flags ^= 0x80;    // 位翻转
flags <<= 2;      // 左移2位

类型转换

double pi_val = 3.14159;
int approx = static_cast<int>(pi_val);  // 显式转换 → 3

sizeof运算符

size_t int_size = sizeof(int);     // 获取类型大小
double arr[10];
size_t arr_bytes = sizeof(arr);    // 获取数组总字节数

运算符优先级

优先级运算符
1:: (作用域解析)
2() [] . -> ++ -- (后缀)
3++ -- (前缀) ~ ! + - (一元) & * sizeof
4.* ->* (成员指针)
5* / % (乘除模)
6+ - (加减)
7<< >> (位移)
8< <= > >= (关系)
9== != (相等)
10& (位与)
11^ (位异或)
12| (位或)
13&& (逻辑与)
14|| (逻辑或)
15?: (条件) = 复合赋值
16, (逗号)

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。