加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是什么类型的操作?

发布时间:2020-12-16 10:34:23 所属栏目:百科 来源:网络整理
导读:在C中,是否将变量/值类型转换为一元运算? 要添加到这个是类型化整数值(可能在你应用掩码之前)也是一元操作?让我说我有 ((uint64_t)1 30 0xFFFF0000FFFF0000LL) 1填充零(最多64位),然后移位? 解决方法 逻辑上,是的,将它视为一元运算符是合理的,因为它需要
在C中,是否将变量/值类型转换为一元运算?

要添加到这个是类型化整数值(可能在你应用掩码之前)也是一元操作?让我说我有

((uint64_t)1 << 30 & 0xFFFF0000FFFF0000LL)

1填充零(最多64位),然后移位?

解决方法

逻辑上,是的,将它视为一元运算符是合理的,因为它需要一个操作数.

但是如果你看一下C标准对表达式进行分类的方式,第6.5.3节将介绍一元运算符,并在第6.5.4节中单独描述了强制运算符.

实际上至少有一种区别很重要.

一元快递的大小

是一元表达的几种形式之一.如果一个强制转换操作符(类型名称)被视为像其他操作符一样的一元运算符,那么:

sizeof (int) 42

将是一个有效的一元表达式:42将是转换运算符的操作数,而操作数又是一元运算符sizeof的操作数.但实际上这是一个语法错误(因为sizeof(int)本身就是一个有效的表达式).为了避免这个问题,一元运算符和强制转换运算符是分开定义的(实际上给出了不同的优先级).要在避免语法错误的同时编写上述内容,您需要添加括号:

sizeof ((int) 42)

参考:N1570,最新免费提供的2011 ISO C标准草案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读