那本书里面都有啊啊!!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2015-3-17更新~~~~~~~~~~~~~~~~~~~

先上两个解释我的疑惑的链接:

http://en.cppreference.com/w/cpp/language/operator_arithmetic

https://msdn.microsoft.com/en-us/library/3t4w2bkb.aspx

开始我是看 <<Expert C programming -- Deep C Secrets>>这本书(中文译作 C专家编程), chapter 1 里面的how quite is a quite change 这一小节, 有这样一段代码:

#include <stdio.h>

int main()
{
    if(-1 < (unsigned char)1)
        printf("-1 is less than (unsigned char)1: ANSI semantics.\n");
    else
        printf("-1 is NOT less than (unsigned char)1: K&R semantics.\n");
    return 0;

}

我用了vs2013和gcc 4.9.1分别去编译运行, 都是ANSI的语义.打印第一条语句.

然后改成这样

#include <stdio.h>


int main()
{
    if(-1 < (unsigned int)1)//或者是unsigned
        printf("1111111111.\n");
    else
        printf("222222222222222.\n");
    return 0;
}

gcc 4.9.1编译运行(未加任何特殊编译选项)的结果是打印第二条. 而vs2013默认编译不通过, error:负数转变成了无符号数.

开始看 <<Expert C programming -- Deep C Secrets>>这本书这里时有点偷懒, 只记得了这两句话:

Operands with different types get converted when you do arithmetic. Everything is converted to the type of the floatest, longest operand, signed if possible without losing bits.

gcc警告强度开大一点就好了

sh-4.3# gcc -o main *.c -Wall                                                               
sh-4.3# gcc -o main *.c -Wall -Wextra                                                       
main.c: In function 'main':                                                                 
main.c:5:11: warning: comparison between signed and unsigned integer expressions [-Wsign-com
pare]                                                                                       
     if(-1 < (unsigned ) 1)                                                                  

^

实际上完整的规则还是本文开头的哪两个链接靠谱.

我觉得 best practice应当是尽量少用强制转换,  谁想去记忆那些无聊的规则.

转载于:https://www.cnblogs.com/likeatree/p/4345159.html

关于 C 的 arithmetic conversion (进行 算术运算 时的 强制转换规则)相关推荐

  1. w7提示无法关闭计算机,番茄花园windows7关闭电脑关机时提示强制关闭程序怎么办...

    在win7系统中,关机时还有任务在运行的话,系统会等待所有程序自动结束后再执行关机,不过也会给用户提示是否强制关闭程序.很多番茄花园win7用户想取消强制关闭程序的提示,因为有些时候不点击就不会关机, ...

  2. git找回本地被覆盖或者删除的文件/确保本地代码为最新时,强制使本地文件覆盖git库文件

    操作前提(老手可略过不看): 1.进入代码本地根目录下(也就是当初你提交到git库上的路径,特点是此目录下带.git文件夹) 2.在空白处点击右键 选择Git Bash Here进入git控制台 一. ...

  3. 硬盘故障时如何强制关机:Input/output error

    如果硬盘可能会出现锁死或坏道的故障,会造成SHELL命令的失效,包括 reboot,powoff,,shutdown,用正常的命令是没法完成重启的. 执行这些命令,会出现如下IO报错: reboot ...

  4. Win XP系统无法关机时如何强制软关机

    有没有试过Windows XP无法关机的故障?单击"开始"→"关闭计算机"选择关闭没有反应,按下组合键"Ctrl+Shift+Delete" ...

  5. Win XP操作系统无法关机时如何强制软关机

    有没有试过Windows XP无法关机的故障?单击"开始"→"关闭计算机"选择关闭没有反应,按下组合键"Ctrl+Shift+Delete" ...

  6. linux c 绝对值函数,linux c 简介

    --- title: linux c 简介 date: 2020-07-19 updated: 2020-07-19 --- # Preface # todo linux c http://blog. ...

  7. 数值分析笔记 - L2 - Floating Point Arithmetic(国外资料)

    目录 1. Finite precision number systems 有限精度数字系统 1.1 Issues 问题 2. Normalised systems 规格化系统 2.1  A gene ...

  8. dos定义变量算术运算逻辑运算表达式分隔符

    (1)自定义变量 请看如下命令: @echo off set myname=okbase.net set myage=3 echo %myname% is about %myage% years ol ...

  9. linux 算术命令,shell中进行算术运算的各种方法

    shell中,无法直接进行算术运算,如果直接进行算术运算会出现如下情况. 从上图可以看出,默认情况下,shell不会直接进行算术运算,而是把"算术符号"当做"字符串&qu ...

最新文章

  1. linux madplay运行完成,Madplay移植到mini2440全过程详解
  2. redirect_uri参数错误解决方法
  3. scalikejdbc 学习笔记(2)
  4. 计算机没有autoCAD_挑战在一年内用晚上业余时间学会灵活运用CAD(1)|cad|autocad|图学|计算机|电子电路...
  5. 实例化bean的三种方式
  6. 【实战HTML5与CSS3 第一篇】初探水深,美丽的导航,绚丽的图片爆炸!!
  7. SharpDeveloeper开发ASP.NET MVC汗流浃背
  8. 10分钟带你逆袭kafka之路
  9. 蓝色简约好看的个人接单HTML源码
  10. bzoj 1676: [Usaco2005 Feb]Feed Accounting 饲料计算(差分)
  11. ELK实践(三)北京历年空气质量数据分析
  12. CodeMeter服务不能启动的解决方法,rslogix5000,无法启动,codemeter服务没有启动,
  13. [DAX] IF函数
  14. 苹果电脑Mac很久不用,accountsd Messages 登陆钥匙串一直提示输入密码 错误
  15. layui 动态增加时间
  16. oracle ORA-22992问题
  17. 讯飞webapi语音合成多音字处理
  18. 警惕黑客使用Lion系统漏洞破解和修改用户登陆密码
  19. 安装vue cli失败,显示this package has been deprecated in favour的解决办法
  20. React项目创建报错解决方案npm ERR! code 1 npm ERR! path E:\Node1\untitled5\node_modules\fibers npm ERR! command

热门文章

  1. VS2005中单元测试自定义异常的方法
  2. Close window without alert
  3. 大专学历造假改成了211, 拿到了抖音Offer
  4. iPhone Xs发布会其实是苹果计算机视觉技术发布会!
  5. Python 超简单一键美化你的文章
  6. 3详细参数_大疆精灵3值得入手吗?最详细的实测体验,各种参数应有尽有!
  7. PyTorch官方教程大更新:增加标签索引,新手更加友好
  8. 盘点IT中最热门的岗位,有你工作的岗位吗?
  9. 给python小白的几个小练习(附答案详解哦)
  10. 算法训练和模型部署如何避免多次重写数据预处理代码