C语言支持两种不同的数值类型,整数类型,浮点类型。

C语言的整数类型有不同的尺寸。int类型通常为32位,但在老的CPU上可能是16位。有些可能是64位。

因此,int型如果在16位CPU上最大值就是:0111111111111111   对应值是32768(2^15-1)。

在32位CPU上当然就是:01111111111111111111111111111111   对应值是2147 483 647(2^31-1).

同理64位上…………

32位上int型与long类型的最大值相等

但是16位与64位均不同,long比int大2^n次方

C99提供了两个额外的标准整数类型:long long int 和 unsigned long long int 。

这两个long long 类型要求至少64位宽,所以long long int 类型值的范围通常为

-2^63(-9 223 372 036 854 775 808)到2^63-1(-9 223 372 036 854 775 807)

整数溢出怎么办?

整数溢出是的行为要根据操作数是有符号型还是无符号型来确定。有符号整数运算中发生溢出时,程序的行为时未定义的。

无符号整数类型运算过程中发生溢出时,结果是有定义的:正确的答案对2^n取模,其中n是用于存储结果的位数。

例如,如果对无符号的16位数65535加1,其结果可以保证是0.

浮点常量

浮点常量可以有许多种书写方式。例如下面这些常量是表示数57.0的有效方式

57.0    57.    57.0e0    57E0    5.7e1    5.7e+1    .57e2    570.e-1

默认情况下,浮点常量都以双精度数的形式存储。当C语言编译器在程序中发现常量57.0时,他会安排数据以double类型变量的格式存储在内存中。

在某些极个别情况下,可能会需要强制编译器以float或long double 格式存储浮点常量。为了表明只需要单精度,可以在常量的末尾加上字母F或f(如 57.0F);

而为了说明常量必须以long double格式存储,可以在常量的末尾加上字母L或l(如57.0L)。

执行程序时,使用getchar()函数和putchar()函数(胜于scanf和printf)可以节约时间。

注意算术转换中不同类型之间的变化

为了统一操作数的类型,通常可以将相对较狭小类型的操作数转换成另一个操作数的类型来实现

即为所谓的提升,最常用的提升是整值提升,它把字符或段整数转换成int类型(或者在某些情况下是unsigned int类型)

任意操作数是浮点型的情况

long double

^

|

double

^

|

float

如此提升

两个操作数的类型都不是浮点类型的情况。

int ——>unsigned int ——>long int ——>unsigned long int

当把有符号操作数和无符号操作数组合时,把有符号操作数“转换”成无符号的值。转换过程需要加上或者减去n+1的倍数,其中n是无符号类型能表示的最大值

。这条规则可能会导致某些隐蔽的编程错误。

假设int类型的变量 i 的值是-10 而unsigned int 类型的变量u的值是10.如果用“<”运算符比较 i 和 u 那么期望的结果应该是1(真)

但是,在比较前,变量 i 转换成unsigned int类型。因为负数不能被表示成无符号,所以转换后不再是-10,而是加上 4 294 967 296 的结果

即4 294 967 286 因而 i < u   结果是0

因此,最好避免使用无符号整数,特别是不要把它和有符号的整数混合使用

如果数是负数,如何以八进制或十六进制形式书写它???

没有直接的方法可以书写负数的八进制或十六进制。幸运的是需要这样做的情况非常少。当然,

我们可以判定这个数是否是负数,然后自己显示一个负号:

if(i < 0)

printf("-%x",-i);

else

printf("%x",i);

C语言程序设计现代方法_基本类型(第七章)的更多相关文章

  1. C语言程序设计现代方法_数组(第八章)

    C语言不要求检查下标的范围.当下标超出范围时,程序可能会执行不可预知的行为. 看下这个程序: #include <stdio.h> #define N 10 // int main() { ...

  2. C语言程序设计现代方法1,2,3章

    1:浮点型(float)运算比int慢,并且可能存在舍入误差 如float存储0.1,以后使用可能会变成0.099999999987 2:宏定义只用大写,这是大多数C程序猿遵循的规范! C语言区分大小 ...

  3. Lambda语言篇 —— lambda, 方法引用, 目标类型和默认方法

    本文介绍了Java SE 8中新引入的lambda语言特性以及这些特性背后的设计思想.这些特性包括: lambda表达式(又被成为"闭包"或"匿名方法") 方法 ...

  4. C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载

    下载地址:点我 C语言仍然是计算机领域的通用语言之一,但现在的C语言已经和当初的时候大不相同了.本书主要的一个目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程,不再强调“手工优化 ...

  5. C语言程序设计-现代方法(笔记3)

    第十三章 字符串 1.字符串字面量(13.1) 字符串字面量:用一对双引号括起来的字符序列.字符串字面量可以像字符常量一样包含转义字序列. 在字符串字面量中小心使用八进制和十六进制的转义序列. 字符串 ...

  6. C语言程序设计-现代方法(笔记1)

    第一章 C语言概述 1.C语言的历史(1.1) 起源:贝尔实验室开发的UNIX操作系统的副产品.标准化:C89和C99.基于C的语言:C++,Java,C#,Perl. 2.C语言的优缺点(1.2) ...

  7. 《C语言程序设计现代方法》第4章 表达式

    C语言的一个特点就是它更多地强调表达式而不是语句,表达式是表示如何计算值的公式. 当表达式包含两个或更多个相同优先级的运算符时,运算符的结合性(associativity)开始发挥作用.如果运算符是从 ...

  8. 《C语言程序设计现代方法》第2章 C语言基本概念

    C语言的基本概念 第一个C程序例子. /* pun.c */ #include <stdio.h> int main(void) { printf("To C, or not t ...

  9. 《C语言程序设计现代方法》第4章 编程题

    1 编写一个程序,要求用户输入一个两位数,然后按数位的逆序打印出这个数. 方法一:没技术含量的 #include <stdio.h> int main() { int high, low; ...

随机推荐

  1. centos 7 systemctl

    Linux Systemctl是一个系统管理守护进程.工具和库的集合,用于取代System V.service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器.通过Syst ...

  2. seo伪原创技术原理分析,php实现伪原创示例

    seo伪原创技术原理分析,php实现伪原创示例 现在seo伪原创一般采用分词引擎以及动态同义词库,模拟百度(baidu),谷歌(google)等中文切词进行伪原创,生成后的伪原创文章更准确更贴近百度和 ...

  3. TI CC2541的GPIO引脚设置.

    P1SEL寄存器, 0xF4, 功能选择用的, 0表示GPIO口, 1表示外设.

  4. JSP中文乱码问题解决方法小结

    在使用JSP的过程中,最使人头疼的一个问题就是中文乱码问题,以下是我在软件开发中遇到的乱 码问题以及解决方法. 1.JSP页面乱码 这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要 ...

  5. lz: linux ls 变种 只显示大小和名称(包括目录)

    本次输入法使用: 手心输入法 for Mac 1.0版 测试环境为:Ubuntu 14.14.2 LTS updates 测试时间为:2015年5月28日,感觉死亡将至的夜晚,独自一人坐在一个角落,戴 ...

  6. 【jqGrid for ASP.NET MVC Documentation】.学习笔记.4.性能

    1 HTML / ViewState 大小 1.1 HTML 大小 jqGrid for ASP.NET MVC 使用最佳的客户端渲染,意味着 HTML gird 的 尺寸是最小的.事实上,只有 gr ...

  7. JavaEE基础(二)

    1.Java语言基础(常量的概述和使用) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用 ...

  8. ACM第四站————最小生成树(普里姆算法)

    对于一个带权的无向连通图,其每个生成树所有边上的权值之和可能不同,我们把所有边上权值之和最小的生成树称为图的最小生成树. 普里姆算法是以其中某一顶点为起点,逐步寻找各个顶点上最小权值的边来构建最小生成 ...

  9. webconfig简单加密解密

    <?xml version="1.0"?><configuration> <configSections> <section name=& ...

  10. 新注册域名greenopen.site,向专业道路进军

    新注册域名greenopen.site,向专业道路进军,欢迎访问!届时可以通过 greenopen.site jsxyhelu.github.io 或者jsxyhelu.cnblogs.com 访问本 ...