\x 和 0x 的区别

1781 篇文章 ¥199.90 ¥299.90
本文介绍了在C/C++编程中0x和x的区别:0x用于表示十六进制整数,如0x42等同于整数66;而x42则用于字符或字符串中,表示十六进制的ASCII码,对应字母'B'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、0x 表示整型数值 (十六进制)

char c = 0x42; 表示的是一个数值(字母B对应的ASCII码—— 66),可以认为等价于: int c = 0x42;

2、\x42用于字符表达,或者字符串表达


   char c = '\x42';    亦等价于: char c = 0x42;
    char* s = "\x41\x42";  //表示字符串:AB

3、八进制数值以0开头(零)

  int a = 0102 ; //八进制数据, 等价于十进制的66
 // char* s = "\0102"; //八进制不能这样写表示字符
表达式 `x | 0x01` 是一种位运算操作,其中涉及到两个关键部分:`x` `0x01`。下面是对这个表达式的详细介绍: ### 1. 表达式的含义 - **按位或(OR)操作**: 按位或操作符 (`|`) 对参与运算的两个数的每一位进行比较。如果某一位上任意一个是 `1`,结果就是 `1`;只有当两位都是 `0` 时,结果才是 `0`。 - **`0x01` 的意义**: 常量 `0x01` 是一个十六进制表示法,对应的二进制形式是 `00000001`。它代表最低位始终为 `1`,其余所有位都为 `0`。 --- ### 2. 具体作用 假设变量 `x` 是一个整数类型的值,比如它的二进制形式是: ``` x = 0b10101010 (十进制 -170) ``` 那么计算 `x | 0x01` 的过程如下: ``` x: 10101010 (原始值) 0x01: 00000001 (最低位置1) ------------------- result: 10101011 (最低位变成1) ``` 从上面可以看出,无论 `x` 的其他位是什么状态,只要通过 `| 0x01` 运算,就一定会将最右侧的一位设置为 `1`。 #### 实际效果总结: - 如果 `x` 最低位本来已经是 `1`,则不会改变; - 如果 `x` 最低位原本是 `0`,就会强制变为 `1`。 这种技巧经常用于确保某个标志位总是开启的状态。 --- ### 示例代码 ```c #include <stdio.h> int main() { int x = 0b11110000; // 初始值,低四位全为零 printf("Before OR operation: %d\n", x); // 使用按位或修改最低位为1 x |= 0x01; printf("After OR operation : %d\n", x); return 0; } ``` 运行上述程序可以直观地看到数值的变化情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值