当前位置: 首页 > news >正文

C/C++常见符号与运算符

C/C++常见符号与运算符对照表

符号用法与意义与Java类比
:在条件运算符中 (cond ? x : y) 表示条件为假的分支;
switch-case 中如 case 1:表示标签结束点;
在自定义标签如 label: 中用于 goto 跳转
Java中? :三元运算相同;switch-case中也有:用于分支
:: (C++特有)作用域解析符,std::stringClassName::method() 指定类或命名空间作用域。在C中不存在该符号。Java使用.访问静态成员,C++使用::明确作用域,C无此特性
~按位取反(bitwise NOT),对整数位逐个取反,如 ~x与Java ~运算相同
&取地址和按位与运算符:
- &x 取变量x的地址,用于指针。
- a & b 按位与运算。
Java中&为按位与,不存在取地址运算。C/C++ &多用途
*指针声明与解引用,以及乘法:
- int *p;声明p为指针
- *p解引用指针
- a * b乘法
Java *仅作乘法;C/C++中还用来声明指针与解引用指针
->用于指针访问结构体成员:ptr->field 等价 (*ptr).fieldC/C++特有,Java无指针需->,Java对象用.访问成员
.成员访问运算符,用obj.field访问结构体、类的成员与Java中obj.field相同
[]数组下标运算符:arr[i]访问数组元素与Java中数组访问相同
++/--自增自减运算符,i++++ii----i与Java意义相同与Java自增自减一致
+= -= *= /= %= <<= >>= &= ^= `=`复合赋值运算符,与Java相同,如 a += ba = a + b
%取模运算符:a % b获取a除b的余数与Java %相同
^按位异或运算符:a ^ b对位进行异或。与Java ^位异或相同
``按位或运算符:`a
<< >>左移、右移位运算符,a << n左移n位,a >> n右移n位与Java移位运算相同
!逻辑非运算符:!expr ,expr为0则结果1,否则结果0与Java逻辑非!相同
&&逻辑与运算符:expr1 && expr2
如果expr1为0(假)则不计算expr2,返回0(假);
如果expr1非0(真),再计算expr2决定最终结果。
与Java中&&语义相同,都为短路与;当第一个为假时不继续计算
... (省略号)用于可变参数函数声明,如 int printf(const char *fmt, ...);表示变长参数列表与Java的可变参数列表作用类似,但C使用不同的机制(varargs)
;语句结束符,每句以;结束与Java中语句结束使用分号相同
{ }定义代码块或作用域,如函数体、复合语句、结构初始值列表与Java中大括号用途相同
# ##预处理器指令与宏相关符号:#include#define以及##参数拼接C/C++预处理机制特有,Java无此编译前处理方式

&& 的具体解释

&& 是逻辑与(logical AND)运算符,用于判断两个条件表达式在布尔意义上的与关系:

  • 表达式 expr1 && expr2 的求值过程是短路求值:
    • 首先计算 expr1,如果 expr1 为0(C中0表示false),则整个expr1 && expr2结果为0,不计算expr2
    • 如果 expr1非0(true),则再计算expr2,结果取决于expr2是否为非0(true)。

这种行为与Java中的&&完全一致。

示例:

int a = 5;
int b = 0;if (a > 0 && b != 0) {// 当a > 0为真,会去检查b != 0。b=0则b != 0为假,因此整个if为false// 如果a <=0,则不会检查b != 0。
}

总体对比与理解

  • 对于有Java基础的人,许多C/C++运算符语义与Java相似(如逻辑运算&&, ||,算术与移位运算等)。
  • 不同点在于C/C++中有指针相关运算符(&取地址、*解引用、->访问指针成员)和预处理器指令(#, ##),以及C++作用域解析::
  • 在C中,&&|| 都提供短路求值,与Java中相同,这有助于使用条件判断更高效。

通过这张表格和解释,你可以快速理解C/C++中这些符号的意义和用法。

http://www.lryc.cn/news/501230.html

相关文章:

  • 了解 k8s 网络基础知识
  • 用户信息界面按钮禁用+发送消息功能
  • 接近开关传感器-PCB线图电感式传感器【衰减系数1】
  • C/C++流星雨
  • 计算机网络:传输层、应用层、网络安全、视频/音频/无线网络、下一代因特网
  • [漏洞挖掘与防护] 05.CVE-2018-12613:phpMyAdmin 4.8.1后台文件包含缺陷复现及防御措施
  • GroundingDINO微调训练_训练日志解释
  • 【0362】Postgres内核 XLogReaderState readBuf 有完整 XLOG page header 信息 ? ( 7 )
  • H5接入Steam 获取用户数据案例 使用 OpenID 登录绑定公司APP账户 steam公开用户信息获取 steam webapi文档使用
  • pytorch多GPU训练教程
  • 力扣--LCR 178.训练计划VI
  • Linux 网络接口配置
  • 【从零开始入门unity游戏开发之——C#篇01】理论开篇
  • ABAP开发-批量导入BAPI和BDC_1
  • RabbitMQ七种工作模式之 RPC通信模式, 发布确认模式
  • 并非传统意义上的整体二分
  • PostgreSQL的一主一从集群搭建部署 (同步)
  • ios逆向某新闻 md5+aes
  • grpc的负载均衡
  • 提升搜索体验!—— 推出 Elastic Rerank 模型(技术预览版)
  • 【51单片机】程序实验1112.外部中断-定时器中断
  • webrtc-java:引领Java进入实时通信新时代
  • TongWeb7-东方通快速使用手册
  • JVM内存区块
  • C语言单元总结
  • 通过PS和Unity制作2D动画之一:创建形象
  • Notable是一款优秀开源免费的Markdown编辑器
  • 基于MFC绘制门电路
  • C—指针初阶(2)
  • Linux 基础环境的开发工具以及使用(下)