02.C(数据类型与运算符)

简介: (创建于2017/8/14)1.float型变量a只能接受7位有效数字,因此最后三位是不准确的,但double型数字是可以全部接受10位有效数字的2.常用转义字符:\0 空字符 0\t 水平制表,跳到下一个Tab位置 9\r 回车,将当前位置移到本行的开头 13\n 换行,将当前位置移到下一行的开头 10' 双撇号 34),"" 单撇号 393.逗号运算符(逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。

(创建于2017/8/14)

1.float型变量a只能接受7位有效数字,因此最后三位是不准确的,但double型数字是可以全部接受10位有效数字的
2.常用转义字符:
\0 空字符 0
\t 水平制表,跳到下一个Tab位置 9
\r 回车,将当前位置移到本行的开头 13
\n 换行,将当前位置移到下一行的开头 10
' 双撇号 34),"" 单撇号 39
3.逗号运算符(逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。)

#include<stdio.h>
    int main(){
    int m=1,n=2;
    int a;
    a=(m+n,m-n);
    printf("a的值为%d,表达式的值为%d\n",a,a=(m+n,m-n));
    a=m+n,m-n;
    printf("a的值为%d,表达式的值为%d\n",a,(a=m+n,m-n));
    a=m+n,m-n+a;
    printf("a的值为%d,表达式的值为%d\n",a,(a=m+n,m-n+a));
    printf("");
    return 0;
 }

运行结果
a的值为-1,表达式的值为-1
a的值为3,表达式的值为-1
a的值为3,表达式的值为2

4.强制类型转换
对变量进行强制类型转换时,只能得到一个中间值,并不改变该变量原有的类型。
5.自增运算和自减运算(++/-- 同java)
自增运算符和自减运算符是c语言特有的单目运算符,他们只能和一个单独的变量组成表达式。
x++和++x的相同之处是:单独作为一个表达式语句被使用时,无论执行了哪一种表达式,执行结束后x的值都加1.
x++和++x的不同之处是:当他们出现在其他表达式中时,也就是说作为其他表达式的一部分时,两个表达式的结果是不一样的。++x的值等于原值+1,x++的值等于x的原值。

6.位运算

#include<stdio.h>
// 运行结果如下:(分别为取反,与,或,异或,右移与左移)
int main(){
    unsigned int A=0xb3,B=0x9a;
    printf("A=%x\n", A);
    printf("B=%x\n", B);
    printf("~A=%x\n",~A);
    printf("A&B=%x\n",A&B);
    printf("A|B=%x\n",A|B);
    printf("A^B=%x\n",A^B);
    A=27;B=28;
    printf("A<<1=%u\n",A<<1);   
    printf("A>>1=%u\n",B>>1);
    return 0;
 }
运行结果:
A=b3
B=9a
~A=ffffff4c
A&B=92
A|B=bb
A^B=29
A<<1=54
A>>1=14

数据类型

7.有符号数和无符号数的区别

有符号,最高位是符号位,1代表负数,0代表正数
无符号,最高位不是符号位,是数的一部分,无符号不可能是负数

8.char数据类型范围

char 占一个字节
有符号:-128~127
无符号:0~255

9.数值越界

char a = 127 + 2;
打印a的值为-127,从补码的角度分析
127+2 = 129 ,129转换为2进制是10000001,计算机是以补码存储数据的,所以这个2进制数是129的补码
补码:1000 0001
反码:1111  1110
原码:1111  1111(最高位是符号为) = -127

unsigned char b = 255 + 2;
257转换位二进制0001 0000 0001
因为是无符号数,所以只取后8位,得到的是1

10.sizeof

sizeof不是函数,只是一个运算符,所以不需要包含任何头文件,它的功能是计算一个数据类型的大小,单位位字节
sizeof的返回值位size_t
size_t类型在32位操作系统下是unsigned int,是一个无符号整数

11.整型变量输入输出

short  短整型 占2个字节
int     整型  占4个字节
long  长整形   windows 占4个字节 Linux占4个字节(32位),8个
字节(64位)
long long 8个字节

整型数据在内存中占用的字节数与所选的操作系统有关,虽然C语
言标准中没有明确规定整型数据的长度,但是long类型整数的长度
不能短于int,short类型的长度不能长于int

当一个小的数据类型赋值给一个大的数据类型,不会出错,因为编
译器会自动转换,但是当一个大的数据类型赋值给一个小的数据类
型,可能会丢失高位


打印格式                 含义
%d                      输出一个有符号的十进制int类型
%o(字母o)                输出8进制int类型
%x                      输出16进制int类型,字母小写
%X                      输出16进制int类型,字母大写
%u                      输出10进制无符号数

12.字符型

字符变量实际上并不是把该字符本身放到变量的内存单元中去,而
是将该字符对应的ADCII编码放到变量的存储单元中,char的本质就
是一个字节大小的整型,内存中没有字符,只有数字,一个数字对
应一个字符,这种规则就是ASCII,使用字符或数字给字符变量赋值
是一样的

char ch = 'a'    char ch = 97 等价

小写字母比大小字母的字节大32
小写转大写 'a'-32
大写转小写 'A'+32

13.转义字符

char a = 'abc'  //原则上''内部只有一个字符,转移字符除外,这种写法不合适,会有警报
转义字符,由反斜杠组成的多个字符"\"

14.浮点型:float double

实型变量也称为浮点型变量,存储小数数值
单精度浮点数float: 占用空间4个字节,有效存储7位
双精度浮点型:占用8个字节,有效存储15~16
默认是double,加上f结尾是float,3.14是double类型,3.14f是float

15.类型限定符

extern : 声明一个变量,extern生命的变量没有建立存储空间 extern int a
const : 定义一个常量,值不能修改
volatile :放置编译器优化代码
register : 定义寄存器变量,提高效率,register是建议型的指令,而
不是命令型的指令,如果CPU由空闲寄存器,那么register就生效,
如果没有空闲寄存器,就无效

运算符

相关文章
|
6月前
|
存储 安全 程序员
C++中的四种类型转换运算符
reinterpret_cast` 则是非常危险的类型转换,仅用于二进制级别的解释,不检查安全性。`dynamic_cast` 用于类的继承层次间转换,向上转型总是安全的,向下转型时会借助 RTTI 进行安全性检查。只有当转换路径在继承链内时,转换才会成功。
|
6月前
|
存储 Java 程序员
强制类型转换运算符的深入解析
在编程中,类型转换是一个常见的操作,它允许我们将一个数据类型转换为另一个数据类型。在某些情况下,编译器可以自动执行这种转换,称为隐式类型转换。但在其他情况下,需要程序员显式地指定转换,这就是所谓的强制类型转换。
32 0
|
6月前
第二章:数据类型、运算符和表达式
第二章:数据类型、运算符和表达式
57 0
|
11月前
|
存储 Oracle Java
Java数据类型,变量与运算符
Java数据类型,变量与运算符
57 0
|
12月前
|
Linux C语言 C++
操作符&算数转换题
操作符&算数转换题
65 0
隐式类型转换 算术转换 操作符的属性
隐式类型转换 算术转换 操作符的属性
53 0
|
测试技术
变量、数据类型和运算符
变量、数据类型和运算符
|
存储 编译器 C语言
C中的运算和数据类型
C中的运算和数据类型
|
Java
1 变量,类型,运算符,表达式
1 变量,类型,运算符,表达式
84 0