c语言中运算对象必须是整型的运算符是

99ANYc3cd6
预计阅读时长 7 分钟
位置: 首页 C语言 正文

在C语言中,要求其运算对象(操作数)必须是整型的运算符主要有以下几类:

c语言中运算对象必须是整型的运算符是
(图片来源网络,侵删)

位运算符

这是最典型的一类,位运算符直接对整数的二进制位进行操作,因此它们天生就要求操作数是整数类型。

运算符 名称 要求 示例 (假设 a=5, b=1)
& 按位与 两个操作数都必须是整数 a & b 结果为 1
按位或 两个操作数都必须是整数 a | b 结果为 5
^ 按位异或 两个操作数都必须是整数 a ^ b 结果为 4
按位取反 单个操作数必须是整数 ~a 结果为 -6
<< 左移 两个操作数都必须是整数 a << 1 结果为 10
>> 右移 两个操作数都必须是整数 a >> 1 结果为 2

错误示例:

float f = 3.14;
int i = 5;
// 错误:不能对浮点数进行按位与操作
int result = f & i; // 编译器会报错
// 错误:不能对浮点数进行左移操作
int result2 = i << f; // 编译器会报错

模运算符 ()

模运算符用于计算两个数相除的余数,这个概念在数学上通常只对整数定义。

  • 运算符:
  • 要求: 两个操作数都必须是整数类型(包括 char, short, int, long 等)。
  • 示例:
    int a = 10;
    int b = 3;
    int result = a % b; // 结果为 1 (因为 10 / 3 = 3 ... 1)

错误示例:

c语言中运算对象必须是整型的运算符是
(图片来源网络,侵删)
double x = 10.5;
double y = 3.0;
// 错误:不能对浮点数进行模运算
double result = x % y; // 编译器会报错

逗号运算符 (在特定上下文中)

逗号运算符 通常用于将多个表达式连接在一起,并返回最后一个表达式的值,它本身对操作数类型要求不严格,在for循环的第三个表达式(增量表达式)中,如果它被用作复合赋值(如 i++, j++),则它要求其操作数必须是可修改的左值,通常我们使用整型变量。

虽然这不是一个硬性规定,但最常见的用法就是用于整型计数器。

for (int i = 0, j = 10; i < j; i++, j--) {
    // ...
}

这里的 i++j-- 要求 ij 是整型。


sizeof 运算符 (作用于类型名时)

sizeof 返回一个类型或变量在内存中所占的字节数,它的返回值类型是 size_t,这是一个无符号整型。

c语言中运算对象必须是整型的运算符是
(图片来源网络,侵删)
  • 当作用于类型名时,它必须用括号括起来,此时它的“运算对象”是一个类型,这个类型必须是完整类型,通常我们关心的是整型的大小。
    size_t size_of_int = sizeof(int);  // 正确,返回 int 类型的大小
    size_t size_of_float = sizeof(float); // 正确,返回 float 类型的大小

    虽然它不“必须是”整型,但计算整型的大小是其最常见的用途之一。


总结与对比

为了更清晰地理解,我们来看一个表格,对比一下哪些运算符允许浮点数操作数:

运算符 是否要求整型操作数 是否允许浮点数操作数
是 (14 + 2)
是 (0 - 1)
是 (5 * 2)
(注意: 5/22, 0/2.05)
&
^
<<
>>
是 (作用于变量)
是 (作用于变量)

C语言中严格要求运算对象必须是整型的运算符主要是:

  1. 位运算符: &, , ^, , <<, >>
  2. 模运算符:

这些运算符的设计初衷就是直接操作整数在内存中的二进制表示,因此它们与浮点数类型不兼容。

-- 展开阅读全文 --
头像
织梦dedecms列表list如何实现隔行变色?
« 上一篇 12-06
dedecms如何指定多个栏目?
下一篇 » 12-06

相关文章

取消
微信二维码
支付宝二维码

目录[+]