当前位置: 首页 > news >正文

值保留原则

ASNI C标准规则采用值保留(value preserving)原则,就是几个整型操作数混合使用时,结果类型可能是有符合数,也可能是无符号数,取决于操作数的类型的相对大小。

#include <stdio.h>

#define SIZE_OF_ARRAY(arr)   (sizeof(arr)/sizeof(arr[0]))

int main() {

   int d = -1;  

   int a[] = {1, 2, 3, 4, 5, 6, 7};

   if(d<SIZE_OF_ARRAY(a))  {   

    printf("1\n");  

    }  else  {  

        printf("-1\n");

 }

 return 0;

}

执行结果如下:  -1

SIZE_OF_ARRAY所定义的值的类型是unsigned int 类型(以为sizeof返回的类型是无符号类型),if语句讲signed int 和 unsigned int之间测试相等性,所以d被升级为unsigned int 类型。-1转换成unsigned int类型时为一个巨大的值,所以表达式为假。

如果将SIZE_OF_ARRAY的返回结果强制转换为int,由于两边类型一致,结果会如下:

if(d<(int)(SIZE_OF_ARRAY(a)))

执行结果如下: 1

 

转载于:https://www.cnblogs.com/rohens-hbg/p/4770321.html

相关文章:

  • 为什么监听不到开机广播action.BOOT_COMPLETED
  • C++中构造函数和析构函数的调用顺序
  • [20150904]exp slow.txt
  • 数字填空
  • c/c++ 软件集成 安装和可卸载软件
  • 【云分析】《“支持和运维服务”仍然困扰着企业云的应用》
  • 前端工程师技能之photoshop巧用系列第四篇——图片格式
  • serialVersionUID的作用
  • 判断客户端类型,Android,iOS,PC
  • 2015年最新数据库流行排行榜
  • android 调用jni 的简单步骤
  • 做图表统计你需要掌握SQL Server 行转列和列转行
  • Centos7安装Xmind
  • svn的终端使用
  • [KMP求最小循环节][HDU1358][Period]
  • 「译」Node.js Streams 基础
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • co.js - 让异步代码同步化
  • golang中接口赋值与方法集
  • HashMap ConcurrentHashMap
  • HTML5新特性总结
  • iOS 颜色设置看我就够了
  • MQ框架的比较
  • MySQL的数据类型
  • node学习系列之简单文件上传
  • TCP拥塞控制
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端js -- this指向总结。
  • 如何解决微信端直接跳WAP端
  • 如何进阶一名有竞争力的程序员?
  • 思考 CSS 架构
  • 算法之不定期更新(一)(2018-04-12)
  • 学习HTTP相关知识笔记
  • 移动端唤起键盘时取消position:fixed定位
  • 中文输入法与React文本输入框的问题与解决方案
  • 你对linux中grep命令知道多少?
  • ​Spring Boot 分片上传文件
  • # include “ “ 和 # include < >两者的区别
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (13):Silverlight 2 数据与通信之WebRequest
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (力扣)1314.矩阵区域和
  • (转)四层和七层负载均衡的区别
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • *** 2003
  • .aanva
  • .htaccess 强制https 单独排除某个目录
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET 解决重复提交问题
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • [20140403]查询是否产生日志
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下