在C语言中,移位运算符(<<,>>)是算术还是逻辑?

推荐答案

According to K&R 2nd edition the results are implementation-dependent for right shifts of signed values.

Wikipedia表示C/C++通常对有符号值进行算术移位.

基本上,你要么测试你的编译器,要么不依赖它.我的VS2008帮助当前的MS C++编译器说他们的编译器做算术移位.

C++相关问答推荐

如何在C中只使用一个带双方括号([i][j])访问语法的malloc来分配动态大小的2d数组?

如何在IF语句中正确使用0.0

如何使用低级C++写出数值

为什么GCC C23中的关键字FALSE不是整数常量表达式?

SSH会话出现意外状态

如何使用C++在控制台中以彩色打印被阻止的客户端

强制转换变量以在 struct 中蚕食

C语言中神秘的(我认为)缓冲区溢出

使用Open62541向OPCUA服务器发送读请求时内存泄漏

从BIOS(8086)中读取刻度需要多少?

我可以创建适用于不同endian的 colored颜色 struct 吗?

如何摆脱-WIMPLICIT-Function-声明

如何使用calloc和snprintf

强制GCC始终加载常量(即只读),即使启用了优化

C中2个数字的加法 - 简单的人类方法

程序打印一些随机空行

如何为avr atmega32微控制器构建C代码,通过光电二极管捕获光强度并通过串行通信传输数据

变量的指针右对齐,函数的指针左对齐

为什么 C 字符串并不总是等同于字符数组?

定义 int a = 0, b = a++, c = a++;在 C 中定义了行为吗?