无忧启动论坛
标题:
请教各位老师,位运算符的问题
[打印本页]
作者:
wynew8au
时间:
2018-4-2 07:45
标题:
请教各位老师,位运算符的问题
本帖最后由 wynew8au 于 2018-4-2 17:27 编辑
C语言,位运算符<< >> | 和 & 在运算的时候是否都是先转成 unsigned int 再进行运算的,
麻烦各位老师不吝赐教,谢谢。
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n = 4;
unsigned char tempx = 0xff;
tempx = (tempx<<n) >> n;
printf("%x\n",tempx);//得到 0xff
printf("%x\n",(tempx<<24) | 0x03);//得到 0xff000003
unsigned char tempxs = 0xff;
tempxs = tempxs<<n;
tempxs = tempxs>>n;
printf("%x\n",tempxs);//得到 0x0f
printf("%x\n",tempx & 0xF0);//得到 0xf0
system("pause");
return 0;
}
得到4个结果,0xff ,f0xff000003, 0x0f ,0xf0
作者:
tt911
时间:
2018-4-2 08:51
是无符号整形哟,楼下继续。
作者:
不点
时间:
2018-4-2 12:35
下面是我试验的结果:
user@ttyd:~$ cish
[cling]$ true | false
(int) 1, 0x00000001
[cling]% true & false
(int) 0, 0x00000000
[cling]% true && false
(bool) false
[cling]% -1L | 0
(long) -1, 0xffffffffffffffff
[cling]% -1uL | 0
(unsigned long) 18446744073709551615, 0xffffffffffffffff
[cling]%
复制代码
就是说,长整数也可以进行 “位” 运算。无论有符号还是无符号的整数,都可以进行 “位” 运算。
上述试验平台是 cish 项目专用的。cish 是基于 cling 的一个 C++ 的解释器,同时又是一个 shell 命令解释器。
它的方便之处在于,你可以在命令行直接试验 C 语言或 C++ 的语句、函数、表达式,无需编译。
欢迎光临 无忧启动论坛 (http://wuyou.net/)
Powered by Discuz! X3.3