bool数据类型
C语言中没有定义true和false
C语言用0表示false,用非0(不止1)表示true
几种常见的数据类型表示范围
int:10^9
long:10^9
long long:10^18
float:精确表示小数点后6位数,6位后可能出现差错
double:15位
注意:%f 默认%.6f
浮点数的几个注意事项
1)比较两个浮点数
如果两个浮点数都是由常熟直接赋值,这样比较不会出差错
#include <stdio.h>
int main(){
float a=2.7+2.6,b=5.3;
if(a==b){
printf("相等");
}else{
printf("不相等");
}
return 0;
}
2)浮点数的除法运算
两整型相除,结果为整除的结果
如果有浮点数参与运算,结果是准确的结果
#include <stdio.h>
int main(){
int a=5,b=2;
float c=a*1.0/b;
float d=a/b;
printf("%f %f",c,d);
return 0;
}
3)自动类型转换
计算机中,要求操作数必须有相同的大小(eg:char和int)和储存方式(整数:原码,反码,补码)(小数:IEEE754标准),这些不能运算。
C语言,表达式中出现不同的类型进行运算,较低类型将向较高类型转换(即所占字节数较少的类型向占字节数较多的类型转换)
当操作数中没有double类型,转为整型
#include <stdio.h>
int main(){
int a=5,b;
char c='a';
short d=1;
b=a+c+d;
printf("%d",b);
return 0;
}
有double类型则转为double类型
#include <stdio.h>
int main(){
int a=5;
char c='A';
double d=1.0;
d=a+c+d;
printf("%d",sizeof(d));
return 0;
}
若赋值时左右类型不一致,会将右边的变为左边的类型
增大精度:
double a;
a=5.0;
降低精度:
int a;
a=1.567890123;
程序出错:
右值超出左值,结果可能无意义
强制类型转化
#include <stdio.h>
int main(){
float a;
a=1.567890123;
printf("%d",(int)a);
return 0;
}
表达式计算
概念:一系列运算符和算子的结合,用来计算一个值
运算符:+ - * /
算子:参与运算的值
运算符
自增自减运算符
a++:a=a+1
a--:a=a-1
二元运算符
+= -= *=
a+=1:a=a+1
a-=1: a=a-1
a*=1:a=a*1
关系运算符
> < =
优先级
判断
if
条件成立则执行程序,不成立则执行下一条
格式:
if(判断){
条件成立:执行的语句
}
else:否则
#include <stdio.h>
int main(){
if(1>2){
printf("0");
}else{
printf("1");
}
return 0;
}
逻辑运算符优先级
从左到右
#include <stdio.h>
int main(){
if(6>5>4){
printf("yes");
}
return 0;
}
> <优先级大于=
#include <stdio.h>
int main(){
if(5>3==6>4){
printf("yes");
}
return 0;
}
if嵌套
#include <stdio.h>
int main(){
if(1==1 && 2==2){
printf("yes\n");
}
if(1==1){
if(2==2){
printf("yes");
}
}
return 0;
}
&&:且
switch case
循环
for循环
格式:for(判断){
循环体
}
如:1~100的和
#include <stdio.h>
int main()
{
int sum=0;
int i;
for(i=0;i<=100;i++){
sum+=i;
}
printf("%d",sum);
return 0;
}
i=0;若i<=100,执行循环体,然后i++,若i<=100,执行循环体......直到i<=100不成立,执行下一条程序。
while循环
格式:
while(条件){
循环体
}
如求最大公约数
#include <stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int t;
while(b!=0){
t=a%b;
a=b;
b=t;
}
printf("%d",a);
return 0;
}
do while循环
格式:
do {
循环体
}while(条件)
先执行一次循环,再判断条件是否成立,成立则继续循环,否则进入下一条程序。