ANSI C标准之值保留(value preserving)原则

原创 2017年01月02日 21:16:28

当把整形操作数混合使用时,结果可能是有符号数,也肯能是无符号数,取决于操作数的类型相对大小。---------《c专家编程》第一章

eg.

#define ARRAY_LENGTH(a) (sizeof(a)/sizeof(a[0]))
int main(int argc, const char * argv[])
{
    int a[5] = {1,2,3,4,5};
    int len = -1;
    
    if(len<ARRAY_LENGTH(a))cout<<"TRUE"<<endl;
    else cout<<"FALSE"<<endl;
    
    return 0;
}

程序运行结果“FALSE”,原因是sizeof()返回的为unsigned型,所以在if判断中,len被提升到unsigned型,-1的二进制形式FFFFFFFF,作为无符号型,表示32位最大的正整数,十进制43亿多,因此数组的长度,小于len返回false.




版权声明:本文为博主原创文章,未经博主允许不得转载。

ANSI C标准中有几个标准预定义宏:

#include using namespace std; int main() { char compile_date[]=__DATE__; //编译源文件的日期 char compile_ti...
  • yanglu1270514689
  • yanglu1270514689
  • 2014年09月25日 11:48
  • 430

ANSI C(C89)标准库函数手册

前言 ANSI C(C89)标准库函数共有15个头文件。这15个头文件分别为: 1.           2.         3. 4.            5.         6. ...
  • woniu3
  • woniu3
  • 2014年10月22日 16:38
  • 2007

ANSI C、ISO C、Standard C联系与区别

做C语言开发的人,经常会遇到“ANSI C”、“ISO C”与“Standard C”三种术语,经常会让人傻傻分不清楚。博主之前按也是搞不清三者的关系,于是某天下定决心,一定要搞清楚三者的关系,先百度...
  • kelehaier
  • kelehaier
  • 2016年12月29日 11:28
  • 1183

ANSI C标准预定义宏 --使用与C++

ANSI C标准中有几个标准预定义宏: __FILE__     __DATE__   __TIME___    __LINE__   等 __LINE__:在源代码中插入当前源代码行号;...
  • daa20
  • daa20
  • 2014年10月21日 21:03
  • 327

ANSI C 和 POSIX介绍

标准 (ANSI C, POSIX, SVID, XPG, ...) ANSI C:这一标准是 ANSI(美国国家标准局)于 1989 年制定的 C 语言标准。 后来被 ISO(国际标准化组织)...
  • gong_1
  • gong_1
  • 2014年02月14日 15:15
  • 1424

ANSI C/C++基本数据类型:

学了C然后C++,然后MFC/Windows,然后是C#,其中数据类型很多,由基本类型衍生的typedef类型也N多。熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C...
  • rns521
  • rns521
  • 2011年11月15日 19:36
  • 1071

C语言学习——ANSI C标准函数库

即C语言环境自带的变量和方法等 stdioh getchar和putchar gets和puts sprintf和sscanf stringh strcpy strlen strtok stdlibh...
  • zhengyikuangge
  • zhengyikuangge
  • 2016年10月07日 17:03
  • 1254

内存对齐与ANSI C中struct型数据的内存布局 选择自 soloist 的 Blog

当在C中定义了一个结构类型时,它的大小是否等于各字段(field)大小之和?编译器将如何在内存中放置这些字段?ANSI C对结构体的内存布局有什么要求?而我们的程序又能否依赖这种布局?这些问题或许对不...
  • yanglight
  • yanglight
  • 2005年12月03日 08:38
  • 457

新人学习笔记-SQL的ANSI标准

SQL(STructured Query Language)是一种资料库查询和程式设计语言,用於存取资料以及查询、更新和管理关联式资料库系统。美国国家标準局(ANSI)与国际标準化组织(ISO)已经制...
  • News_chapter
  • News_chapter
  • 2017年10月16日 09:41
  • 142

ANSI C标准

1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C...
  • lt6210925
  • lt6210925
  • 2013年06月07日 11:30
  • 649
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ANSI C标准之值保留(value preserving)原则
举报原因:
原因补充:

(最多只允许输入30个字)