c语言基础
一、变量与常量
(1)常量:值不能被改变的量,数字、字母等
整型常量
c语言中有十进制、八进制、十六进制整数,例如10、056、0x8A等。
实型常量
十进制小数以及指数形式小数,例如1.23、.23、12.34e3等
字符常量
普通字符以及转义字符,例如’A’、’a’、’\n’(换行)等
字符串常量
若干字符,例如’abc123’等
(2)变量:值能够被改变的量,需要用关键字定义与基本数据类型配合使用
定义格式
数据类型 变量名; int num;
使用格式
变量名 num
初始化格式
数据类型变量名=数值; int num=10;
#include <iostream>
using namespace std;
int main() {
int num1=10;
int num2=20;
cout << num1+num2<<endl;
return 0;
}
二、基本数据类型
什么是基本数据类型:对数据分配存储单元的安排
(1)整型
int(整型4字节)、short(短整型2字节)、long(长整型8字节)
(2)字符型
char(字符型1字节)
(3)浮点型
float(单精度浮点型4字节)、double(双浮点型8字节)
1字节=8位([0000 0000])
#include <iostream>
using namespace std;
int main() {
int num1=10;
int num2=20;
cout<< num1 << '\t' << num2 <<endl;
char char1='a';
char char2='z';
cout<< char1 << '\t' << char2 <<endl;
float float1=1.23;
float float2=2.34;
cout<< float1 << '\t' << float2 <<endl;
double double1=3.45;
double double2=4.56;
cout<< double1 << '\t' << double2 <<endl;
return 0;
}
三、ASCII码表

四、格式化输入与输出
什么是输出
计算机箱输出设备输出数据:printf(格式控制,输出列表); printf(“%d”,num);
什么是输入
从输出设备向计算机输入数据:scanf(格式控制,地址列表); scanf(“%d”,&num);
#include<iostream>
using namespace std;
int main() {
int num;
printf("请输入num值\n");
scanf("%d",&num);
printf("输出num值");
printf("%d\n",num);
//清除缓冲区中的换行符
while(getchar() != '\n');
char ch1;
printf("请输入ch1值\n");
scanf("%c",&ch1);
printf("输出ch1值%c\n",ch1);
//清除缓冲区中的换行符
while(getchar() != '\n');
float float1;
printf("请输入float1值\n");
scanf("%f",&float1);
printf("输出float值\n");
printf("%.2f",float1);
return 0;
}
五、运算符
运算符:用于进行相关运算的特殊符号
运算符的优先级以及结合性:优先级表示运算的先后顺序,结合性表示同级运算符的运算方向
分类:算术运算符、关系运算符、逻辑运算符、条件运算符、位运算符、赋值运算符
算术运算符
用于进行算术运算,结果为确切的值
+(正号)、-(负号)
单目运算符,结合性自右向左,表示正负关系(+a,-a)
*(乘号)、/(除号)、%(取余)、+(加)、-(减)
双目运算符,结合性自左向右,简单算术运算
++(自增)、--(自减)
单目运算符,结合性自右向左,自增自减运算,分为前置自增和后置自增(++a,a++,--a,a--)
#include<iostream>
using namespace std;
int main(){
int num1=5;
int num2=2;
int num3=num1/num2;
int num4=num1%num2;
printf("%d\n",num3);
printf("%d\n",num4);
printf("%d\n",++num4);
printf("%d\n",num4++);
printf("%d\n",num4);
return 0;
}
关系运算符
用于进行算术运算,结果为1或0
<(小于),<=(小于等于),>(大于),>=(大于等于),==(等于),!=(不等于)
双目运算符,表示运算符两边的关系,关系成立结果为1,不成立结果为0(a<b)
逻辑运算符
用于进行逻辑运算,结果为1或0
&&(逻辑与)
双目运算符,同真为真,有假为假(a&&b)
||(逻辑或)
双目运算符,同假为假,有真为真(a||b)
!(逻辑非)
单目运算符,真为假,假为真(!a)
计算机判断真假:0为假非0为真
条件运算符
进行条件运算,结果根据条件判断
?:(条件运算符)
三目运算符,a为真则输出b的值,a为假则输出c的值(a?b:c)
#include<iostream>
using namespace std;
int main() {
int num1=5;
int num2=3;
printf("%d\n",num1++);
int num3;
// 输出num1和num2中较大的值
num3=num1>num2?num1:num2;
printf("%d\n",num3);
return 0;
}
位运算符
&
位与:操作的两个位都是1,得到的结果就是1,其他情况结果都是0
|
位或:操作的两个位都是0,得到的结果就是0,其他情况结果都是1
~(单目):
位非:位的值为1,结果变为0。值为0,结果变为1
^
位异或:操作的两个位不相同,得到的结果就是1,其他情况结果都是0
<<
位左移:将左操作数据的数据位往左移动右操作数表示的位数,左边移出的数据位丢弃,右边补0
>>
位右移:将左操作数据的数据位往右移动右操作数表示的位数,右边移出的数据位丢弃,正数左边补0,负数左边补1
#include<iostream>
using namespace std;
int main() {
int num1=2;
int num2=3;
printf("%d\n",num1 & num2);
printf("%d\n",num1 | num2);
printf("%d\n",~num1);
printf("%d\n",num1^num2);
printf("%d\n",num1>>2);
printf("%d\n",num1<<2);
//两数交换
num1=num1^num2;
num2=num2^num1;
num1=num1^num2;
printf("%d\n",num1);
printf("%d\n",num2);
return 0;
}

浙公网安备 33010602011771号