c笔记02---数据类型
2015-09-30 16:24
260 查看
1. 整型 int
signed short int 有符号短整型,简写:short/int,字长 2 字节(16 位),范围:-32768~32767(也有的计算机里面,int 是 4 位)
signed long int 有符号长整型,简写:long,字长 4 字节 ;
unsigned short int 无符号短整型,简写 unsigned int,2 字节,范围:0~65535;
unsigned long int 无符号长整型,简写 unsigned long,4 字节。
size_t 无符号整型,在不同编译器上都是 4 字节,代替 unsigned int
2. 浮点型 float
float 单精度浮点数,字长 4 字节
double 双精度,8 字节
3. 字符型 char
字长 1 字节
字符串声明:char ss[20];
4. 隐式类型转换会把占地小的数据转换成占地大的数据,如果数据大小一样会把有符号的数据转换成无符号的数据。
5. C 语言中支持如下逻辑操作符(==, !=, >, >=, <, <=, &&, || )
&& 都为真才为真;
|| 有一个为真即为真;
&& 和 || 具有短路特性
! 也是一个逻辑操作符,可以对一个逻辑表达式的结果求反。
数学操作符优先级高于逻辑操作符
& 表示按位与,可以对两个二进制补码进行计算得到一个新的二进制补码。它可以把某个补码中特定的位置清 0。
| 表示按位或,可以对两个二进制补码进行计算得到一个新的二进制补码。它可以把某个补码中特定的位置设置成 1。
^ 表示按位亦或。它可以把某个已知的补码中特定位置变成相反数字。
~ 表示按位求反,可以对一个二进制补码进行计算得到一个新的二进制补码。
<< 表示左移操作,可以把一个补码向左移动指定的位数。
如果移动后没有丢失有效信息则新数据是原有数据的 2 的 n 次方倍。
>> 表示右移操作,可以把一个补码向右移动制定的位数。如果被移动的数字是无符号数则左边补充 0,否则左边补充符号位。
如果移动后没有丢失有效信息则原数据是新数据的 2 的 n 次方倍。
6. 分别写出 bool, int, float, 指针类型的变量 a 与 “零” 的比较语句。
bool :
if ( !a ) or if(a)
int :
if ( a == 0)
float :
const float EXP = 0.000001 // 定义一个精度,详见下面分析;
if ( a <= EXP && a >= -EXP) // 在这个精度范围内,就认为是 0;
pointer :
if ( a != NULL) or if(a == NULL)
分析:说明 EXP 是一个精度类型,计算机中数据以二进制存储,将浮点数的零转为二进制存储是有误差的;
所以,在精度范围内,我们就认为是零;这样的话,就不能直接用等于或者不等于了,而需要用一个范围来表示;
signed short int 有符号短整型,简写:short/int,字长 2 字节(16 位),范围:-32768~32767(也有的计算机里面,int 是 4 位)
signed long int 有符号长整型,简写:long,字长 4 字节 ;
unsigned short int 无符号短整型,简写 unsigned int,2 字节,范围:0~65535;
unsigned long int 无符号长整型,简写 unsigned long,4 字节。
size_t 无符号整型,在不同编译器上都是 4 字节,代替 unsigned int
2. 浮点型 float
float 单精度浮点数,字长 4 字节
double 双精度,8 字节
3. 字符型 char
字长 1 字节
字符串声明:char ss[20];
4. 隐式类型转换会把占地小的数据转换成占地大的数据,如果数据大小一样会把有符号的数据转换成无符号的数据。
5. C 语言中支持如下逻辑操作符(==, !=, >, >=, <, <=, &&, || )
&& 都为真才为真;
|| 有一个为真即为真;
&& 和 || 具有短路特性
! 也是一个逻辑操作符,可以对一个逻辑表达式的结果求反。
数学操作符优先级高于逻辑操作符
& 表示按位与,可以对两个二进制补码进行计算得到一个新的二进制补码。它可以把某个补码中特定的位置清 0。
| 表示按位或,可以对两个二进制补码进行计算得到一个新的二进制补码。它可以把某个补码中特定的位置设置成 1。
^ 表示按位亦或。它可以把某个已知的补码中特定位置变成相反数字。
~ 表示按位求反,可以对一个二进制补码进行计算得到一个新的二进制补码。
<< 表示左移操作,可以把一个补码向左移动指定的位数。
如果移动后没有丢失有效信息则新数据是原有数据的 2 的 n 次方倍。
>> 表示右移操作,可以把一个补码向右移动制定的位数。如果被移动的数字是无符号数则左边补充 0,否则左边补充符号位。
如果移动后没有丢失有效信息则原数据是新数据的 2 的 n 次方倍。
6. 分别写出 bool, int, float, 指针类型的变量 a 与 “零” 的比较语句。
bool :
if ( !a ) or if(a)
int :
if ( a == 0)
float :
const float EXP = 0.000001 // 定义一个精度,详见下面分析;
if ( a <= EXP && a >= -EXP) // 在这个精度范围内,就认为是 0;
pointer :
if ( a != NULL) or if(a == NULL)
分析:说明 EXP 是一个精度类型,计算机中数据以二进制存储,将浮点数的零转为二进制存储是有误差的;
所以,在精度范围内,我们就认为是零;这样的话,就不能直接用等于或者不等于了,而需要用一个范围来表示;
相关文章推荐
- Android 面试题目
- 抽象工厂模式
- JAVA程序运行原理——知其然,而知其所以然
- 配置dell的idrac7通过email发送报警
- 学习ThinkPHP3.2.2(四):增加记录
- LightOJ 1341 Aladdin and the Flying Carpet
- c笔记01---扩展名简介,linux 常用命令,vi 设置
- http响应状态码大全
- win server2003 sp2
- jQuery插件之ajaxFileUpload
- Objective-C中的KVC和KVO
- 1611:The Suspects
- CRM-处理懒加载异常
- avahi-daemon service
- Eclipse使用Maven导入Robotium源码后报错
- 配置sonar、jenkins进行持续审查
- ios环境下Axure的安装
- 什么是2MSL
- POJ 算法基础 编程题#1:集合加法
- 认识HDFS分布式文件系统