C语言基础语法
C语言基础语法
常量
定义:程序运行过程中无法被改变的量
整形常量:520,1314,123
实型常量:3.14,5.12,8.97
字符常量:
- 普通字符:'L','o'
- 转义字符:'\n', '\t , ' \b' (退格)
字符串常量:"Fishc",(\0表示字符串到此为止)
符号常量:使用之前必须先定义
- 格式:#define 标识符 常量
- 作用:把所有的符号替换为一个常量
#include <stdio.h>
#define name "杨文龙"
#define school "宜宾学院"
#define ages 20
#define month 9
#define day 9
int main()
{
printf("我叫%s今年%d岁,我的生日是 %d 月 %d 日 \n ",name,ages,month,day);
printf("现在在%s读大三\n",school);
//%s占位符,类型为string类型
//%d整型
return 0;
}
变量
定义:存放数据的地方
变量的初始化:数据类型 变量名 = 数值;
#include <stdio.h>
int main()
{
int price = 0;
printf("请输入金额(元)");
scanf("%d",& price);
//要求scanf 这个函数读入下一个整数,读到的结果赋值给变量price, price 前面要加 &
int change = 100 - price; //定义了第二个变量,并且做了计算
printf("找您%d元\n",change);
return 0;
}
标识符
定义:指一切的名字
命名规范:(同变量名)
-
标识符只能是英文字母,下划线,和数字组成
-
第一个字母必须是字母或者下划线开头,不能是数字开头
-
标识符区分大小写
- Fish 不等于fishc
-
不能使用关键字来命名标识符
数据类型
基本类型
- 整数类型:int
- 浮点数类型:float double
- 带小数点的数值,小数点是浮动的
- 字符类型:char
- 布尔类型:_Bool (用于存放真或假:1和0)
- 枚举类型:enum
sizeof运算符用于获得数据类型或者表达式的长度
语法:
sizeof(object); //sizeof(对象);
sizeof(type_name); //sizeof(类型)
sizeof object ; //sizeof 对象;
#include <stdio.h>
int main()
{
int i;
char j;
float k;
double l= 3.14926;
i = 123;
j = 'c';
k = 3.14 ;
printf("size of int is %d \n",sizeof(i));
printf("size of char is %d \n",sizeof(j));
printf("size of float is %d \n",sizeof(k));
printf("size of double is %d \n",sizeof(l));
return 0;
}
#include <stdio.h>
int main()
{
printf("int = %d\n",sizeof(int));//4
printf("short int = %d\n",sizeof(short int));//2
printf("long int = %d\n",sizeof(long int));//4
printf("long long int = %d\n",sizeof(long long)); //8
// short int <int <long int <long long int
printf("char = %d\n",sizeof(char)); //1
printf("_Bool = %d\n",sizeof(_Bool)); //1
printf("float = %d\n",sizeof(float));//4
printf("double = %d\n",sizeof(double));//8
printf("long double = %d\n",sizeof(long double));//16
}
#include <stdio.h>
int main()
{ printf("请输分别输入身高的英尺和英寸,"
"如输入 \"5 7\" 表示5英尺7英寸:");
int foot;
int inch;
scanf("%d %d",&foot,&inch); //必须加入&才能获取到数据
float heigh = (foot + inch /12.0)*0.3048;
//如何是有一个浮点数参与运算那么他会吧整型转换为浮点数进行运算
//c语言中 12.0和12是不一样的两个数
printf("你的身高是%f米。\n",heigh);
return 0;
}
signed和unsigned
作用:用于限定char类型或者任何整型变量的取值范围
signed 可以存放负数
unsigned 不能存放负数,0和整数
#include <stdio.h>
int main()
{
short i;
unsigned short j;
i = -1;
j = -1;
printf("%d \n",i);
printf("%u \n",j); //%u 打印不带符号的,这里的结果65535
return 0;
}
表达式
运算符:是指进行运算的动作,比如加法运算符"+",减法运算符"-"
算子:指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值
运算符 | 描述 | 实例 |
---|---|---|
+ | 把两个操作数相加 | A + B 将得到 30 |
- | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |
* | 把两个操作数相乘 | A * B 将得到 200 |
/ | 分子除以分母 | B / A 将得到 2 |
% | 取模运算符,整除后的余数 | B % A 将得到 0 |
++ | 自增运算符,整数值增加 1 | A++ 将得到 11 |
-- | 自减运算符,整数值减少 1 | A-- 将得到 9 |
例:计算时间差
#include <stdio.h>
int main()
{
int hour1, minute1;
int hour2, minute2;
printf("请输入时间:\n");
scanf("%d %d", &hour1, &minute1);
printf("请输入时间:\n");
scanf("%d %d", &hour2, &minute2);
int t1= hour1* 60 + minute1;
int t2= hour2* 60 + minute2;
//转换为分钟
int t = t2-t1;
printf("时间差为%d小时%d秒.",t/60,t%60);
//int类型保留整数,%取余运算
return 0;
}
交换变量
#include <stdio.h>
int main()
{
int a = 5;
int b = 6;
int temp;
temp = a;
//temp=5
a = b;
//a=6
b = temp;
//b= 5
printf("a= %d \n",a);
printf("b= %d \n",b);
printf("temp= %d \n",temp);
return 0;
}
运算符的优先级
优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 |
---|---|---|---|---|---|
1 | [] | 数组下标 | 数组名[常量表达式] | 左到右 | -- |
() | 圆括号 | (表达式)/函数名(形参表) | -- | ||
. | 成员选择(对象) | 对象.成员名 | -- | ||
-> | 成员选择(指针) | 对象指针->成员名 | -- | ||
2 | - | 负号运算符 | -表达式 | 右到左 | 单目运算符 |
~ | 按位取反运算符 | ~表达式 | |||
++ | 自增运算符 | ++变量名/变量名++ | |||
-- | 自减运算符 | --变量名/变量名-- | |||
* | 取值运算符 | *指针变量 | |||
& | 取地址运算符 | &变量名 | |||
! | 逻辑非运算符 | !表达式 | |||
(类型) | 强制类型转换 | (数据类型)表达式 | -- | ||
sizeof | 长度运算符 | sizeof(表达式) | -- | ||
3 | / | 除 | 表达式/表达式 | 左到右 | 双目运算符 |
* | 乘 | 表达式*表达式 | |||
% | 余数(取模) | 整型表达式%整型表达式 | |||
4 | + | 加 | 表达式+表达式 | 左到右 | 双目运算符 |
- | 减 | 表达式-表达式 | |||
5 | << | 左移 | 变量<<表达式 | 左到右 | 双目运算符 |
>> | 右移 | 变量>>表达式 | |||
6 | > | 大于 | 表达式>表达式 | 左到右 | 双目运算符 |
>= | 大于等于 | 表达式>=表达式 | |||
< | 小于 | 表达式<表达式 | |||
<= | 小于等于 | 表达式<=表达式 | |||
7 | == | 等于 | 表达式==表达式 | 左到右 | 双目运算符 |
!= | 不等于 | 表达式!= 表达式 | |||
8 | & | 按位与 | 表达式&表达式 | 左到右 | 双目运算符 |
9 | ^ | 按位异或 | 表达式^表达式 | 左到右 | 双目运算符 |
10 | | | 按位或 | 表达式|表达式 | 左到右 | 双目运算符 |
11 | && | 逻辑与 | 表达式&&表达式 | 左到右 | 双目运算符 |
12 | || | 逻辑或 | 表达式||表达式 | 左到右 | 双目运算符 |
13 | ?: | 条件运算符 | 表达式1?表达式2: 表达式3 | 右到左 | 三目运算符 |
14 | = | 赋值运算符 | 变量=表达式 | 右到左 | -- |
/= | 除后赋值 | 变量/=表达式 | -- | ||
*= | 乘后赋值 | 变量*=表达式 | -- | ||
%= | 取模后赋值 | 变量%=表达式 | -- | ||
+= | 加后赋值 | 变量+=表达式 | -- | ||
-= | 减后赋值 | 变量-=表达式 | -- | ||
<<= | 左移后赋值 | 变量<<=表达式 | -- | ||
>>= | 右移后赋值 | 变量>>=表达式 | -- | ||
&= | 按位与后赋值 | 变量&=表达式 | -- | ||
^= | 按位异或后赋值 | 变量^=表达式 | -- | ||
|= | 按位或后赋值 | 变量|=表达式 | -- | ||
15 | , | 逗号运算符 | 表达式,表达式,… | 左到右 | -- |
例:三年复利的计算
#include <stdio.h>
//算三年的复利
int main()
{
int x;
scanf("%d",&x);
double amount = x* (1+0.0033)*(1+0.033)*(1+0.33);
printf("三年的总金额为:%f\n",amount);
}
复合运算符
5个算术运算符,+-/%,可以和赋值运算符“=”结合起来,形成复合赋值运算符:"+="、"-="、"* ="等
total + =5;
total = total +5
注意:
两个运算符中间不要有空格
total +=(sum+100)/2
total =total +(sum+100)/2
total*=sum+12;
total=total*(sum+12)
递增递减运算符
++和--是两个很特殊的运算符,他们是单目运算符,这个算子还必须是变量,这两个运算符分别叫做递增和递减运算符,他们的作用就是给这个变量+1或者-1
count ++;
count + =1;
count = count +1;
- 他们有前缀和后缀
注意:
-
a++是先运算再+1,a++是原来的值
-
++a是先+1再运算,前缀是+1以后的结果作为他的结果,++a是+1以后的值
-
不要组合使用
--同上...
例:翻转三位数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num1;
printf("请输入一个三位的整数:(回车继续)");
scanf("%d ",&num1);
int a =num1/100; //百位数
int b =num1/10%10; //十位数
int c = num1 % 10; //个位数
printf("逆序为:%d%d%d",c,b,a);
return 0;
}
取值范围
位:Cpu能读懂的最小单位
字节:内存机构的最小寻址单位(1Byte=8bit)
注意: 只能存放一和0