c语言基本数据类型
基本数据类型:
整型: 短整型short 整型int 长整型long
实型: 单精度float 双精度double
字符型: char
常量
整型 1 99 998
实型:
float 3.14f
double 3.14
字符型 'a' 'b'
字符串 "a" "b" "abc"
变量
用来表示一个需要经常改变或者不确定的数据
int a = 0;
a = 100;
特点:
1.创建一个变量相当于在内存中占用了一块空间
2.这个空间的大小是固定的,但里面的数据可以改变
3.同一个作用域内不能有相同的变量名.
4.初始化时创建,在函数作用域执行完后失效,且内存空间释放.
--标准格式输出函数
先导入头文件
#include<stdio.h>
printf("格式化字符串", <参量表>)
print("字符串");
int a = 1;
float b = 1.1f;
double c = 1.1;
char d = 'a';
print("%d %f %lf %c %p",a,b,c,d,&a);
变量的内从分析
int类型占4个字节
float 4个字节
double 8个字节
char 1个字节
注意点:
定义变量记得初始化 不然该变量存的是垃圾值
-交换两个值
int num1 = 5,num2 = 6;
int temp = num1; //5
num1 = num2; //6
num2 = temp; //5
--scanf函数
导入头文件
#include<stdio.h>
scanf ("格式化字符串", 变量地址);
scanf("%d",&a);
等待用户输入整型数据
注意:
一定不能忘了取地址 &
-运算符
运算符是告诉编译程序执行特定算术或逻辑操作的符号。
按照功能划分:算术运算符、 关系运算符与逻辑运算符、按位运算符。
运算符根据参与运算的操作数的个数分为:
单目运算、双目运算、三目运算
单目运算:只有一个操作数 如 : i++ ! sizeof
双目运算:有两个操作数 如 : a+b
三目运算符:C语言中唯一的一个,也称为问号表达式 a>b ? 1 : 0
-算术运算符
结合性:从左到右
优先级:
(1) * / % 优先级 大于 + -
(2) 优先级相同则左结合计算
求余运算符
注意:
m%n 求余,相当于m/n 获取余数
(1)n等于0 无意义
(2)m等于0 结果为0
(3)m>n 正常求余 如:8%3 = 2
(4)m<n 结果是m 如:2%4 = 2 1%4 = 1 3%8=3
2)运算结果的正负性取决于第一个运算数,跟后面的运算数无关
表达式
将同类型的数据(如常量、变量、函数等),用运算符号按一定的规则连接起来的、有意义 的式子称为表达式。
例如:算术表达式、逻辑表达式、字符表达式等。
表达式可以是常量也可以是变量或算式,在表达式中又可分为:算术表达式、逻辑表达式和字符串表达式。
表达式的特点:
表达式是一个意义的式子,所以一定有返回值
-赋值表达式
赋值运算符记为“=”,由“=”连接的式子称为赋值表达式。
其一般形式为: 变量=表达式
“=”定义为运算符,从而组成赋值表达式。
凡是表达式可以出现的地方均可出现赋值表达式。
--赋值表达式语句---
在赋值表达式后面添加一个分号,构成了一个语句,称为赋值语句。
复合赋值表达式语句
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。
赋值运算符优先级排名14位,仅仅高于“,”运算符。
//---------自增自减运算符-----------//
1)前缀表达式:++x, --x; 其中x表示变量名,先完成变量的自增自减1运算,再用x的值作为表
达式的值;即“先变后用”,也就是变量的值先变,再用变量的值参与运算。
2)后缀表达式:x++, x--; 先用x的当前值作为表达式的值,再进行自增自减1运算。即“先用
后变”,也就是先用变量的值参与运算,变量的值再进行自增自减变化。
注意:不管“++” 在前还是在后,最后变量的值都会+1
3)自增、自减运算只能用于单个变量,只要是标准类型的变量,不管是整型、实型,还是字符型 变量等,但不能用于表达式或常量。
优先级很高 右结合
//---------sizeof运算符-----------//
sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。sizeof操作符以字节形式给 出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小 由操作数的类型决定。
用法:sizeof(常量/变量)
1)用于数据类型
sizeof使用形式:sizeof(type) 数据类型必须用括号括住。如sizeof(int)。
2)用于常量(可以省略括号)
int size = sizeof(1); size = sizeof(1.1); size = sizeof(1.1f); size = sizeof('a'); //4
当sizeof后面的操作数是常量或是变量那么后面小阔号是可以省略的
size = sizeof 1;
3)用于变量(可以省略括号)
sizeof使用形式:sizeof(var_name)或sizeof var_name 变量名可以不用括号括住。如sizeof (var_name),sizeof var_name等都是正确形式。带括号的 用法更普遍,大多数程序员采用这种形式。
char a;
size = sizeof(a);
size = sizeof a; //省略了括号
区分:
char a;
printf("%lu",sizeof(a));
//-------
printf("%lu",sizeof(char);
//-------
printf("%lu",sizeof('a'));
注意:
sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据 类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。
-关系运算符
非0即真
比较两个量的运算符称为关系运算符。
关系运算符返回值只有两个要么是真(1) 要么是假(0)
> < >= <= == !=
在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=
-逻辑运算符运算符-
C语言中提供了三种逻辑运算符:
&&(与运算) ||(或运算) !(非运算)
逻辑表达式的一般形式为:
//表达式 逻辑运算符 表达式
其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。例如:
(a&&b)&&c 根据逻辑运算符的左结合性
逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。
1) 与运算(&&) ----> 口诀:同真为真,一假则假
2) 或运算(||) ----> 口诀:一真为真,同假为假
3) 非运算(!) ----> 口诀:真变假,假变真
与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。 非运算符(!)为单目运算符,具有右结合性。
注意:
1)虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。
但反过来在判断一个量是为“真”还是为“假”时, 以“0”代表“假”,以非“0”的数值作为“真”。
与短路:&& 只要第一个条件表达为假那么后面的条件表达就不参与运算了
或短路:|| 只要第一个条件表达式为真那么后面的条件表达式就不参与运算了
//---------三目运算符-----------//
由条件运算符组成条件表达式的一般形式为:
表达式1? 表达式2: 表达式3
如果表达式1的值为真,则以表达式2 的值作为条件表达式的值 否则以表达式2的值作为整个条件表达式的值。 条件表达式通常用于赋值语句之中。(表达式1控制表达式2或者表达式3的输出)
注意:
注意以下几点:
1. 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
因此 max=(a>b)? a:b可以去掉括号而写为 max=a>b?a:b
2. 条件运算符?和:是一对运算符,不能分开单独使用。
3. 条件运算符的结合方向是自右至左。
a>b?a:c>d?c:d应理解为
a>b?a:(c>d?c:d)
逗号运算符-
在C语言中逗号“,”也是一种运算符,称为逗号运算符。
其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。
a = (a+b,c+2) 其一般形式为:
表达式1, 表达式2
2、其求值过程是分别求两个表达式的值,并以表达式2的(最后一个表达式的值)值作为整个逗号表达式的值。
注意点:
1.并不是在所有出现逗号的地方都组成逗号表达式
2.程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号 表达式的值。
--优先级与结合性
优先级: 15级 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的 结合性所规定的结合方向处理。
结合性: C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。
小技巧 加括号
特点:
什么样数据类型相互运算结果还是什么数据类型
总结
()
-负号 右结合
! 右结合
自增自减 右结合
算术运算符 左结合
关系运算符 左结合 (== !=略低一级)
逻辑 && || 左结合 注意:(非运算符(!)为单目运算符,具有右结合性。)
赋值运算符 右结合
逗号运算符 左结合
|
|