博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
值保留原则
阅读量:6189 次
发布时间:2019-06-21

本文共 614 字,大约阅读时间需要 2 分钟。

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

你可能感兴趣的文章
构成vspher虚拟化平台所需构建概念
查看>>
java设计模式之组合模式
查看>>
lr_save_var() 截取任意字符串长度,以参数形式输出(参数转变量)
查看>>
【1131】C/C++经典程序训练1---最大公约数与最小公倍数
查看>>
Apache Struts2高危漏洞(S2-057CVE-2018-11776)
查看>>
快速排序(算法导论中的版本)
查看>>
网页设计制作CSS实现隔行换色两种方法
查看>>
分布式爬虫(一)------------------分布式爬虫概述
查看>>
小作坊的大道理——读《走出软件作坊》有感
查看>>
php 接口类,抽象类 的实际作用
查看>>
webstorm 配合IIS使用
查看>>
hash,面向对象
查看>>
P3649 [APIO2014]回文串
查看>>
C++对二进制文件的操作实例
查看>>
Java开发必会的Linux命令 转载(http://www.importnew.com/17354.html)
查看>>
SpringBoot 的错误处理机制
查看>>
高并发架构系列:如何解决Redis雪崩、穿透、并发等5大难题
查看>>
Let’s Encrypt 免费ssl加密
查看>>
11.11 开课二个月零七天(ajax和bootstrp做弹窗)
查看>>
自定义控件之圆形的image
查看>>