1,算术操作符(+,-,*,/,%)
1,+,-
2,*
3,/
#include<stdio.h>
int main()
{
float x = 6 /4;
int y = 6/4;
printf("%f\n",x);
printf("%d\n",y);
return o
}
x的类型为浮点数,所以输出为1.00000
y的类型为整型 所以,所以输出为1
在C语言中整数除法,只会返回整数部位,丢弃小数
想得到浮点数,则两个运算数中必须有一个为浮点数
4,%(取余数)
这个运算符只能用于整数,不可用于浮点数
负数求模:结果的正负号由第一个运算数决定
2,赋值操作符
在变量创建完成后给予一个值为赋值
1,连续赋值
int a = 3;
int b = 4;
int c = 5;
c = b = a+3;
从右向左依次赋值(拆开写更好)
2,复合赋值符
a = a +3;可以写为 a += 3;
a = a-2;可以写为a-=2;
类似复合值有:+=,-=,*=,/=,%=,>>=,<<=,&=,|=,^=
3,单目操作符(只有一个操作数)
1,++
前置++(先加一,再使用)
int a = 10;
int b = ++a;
a+1=11,再赋值给b,b=11
后置++(先使用,后加一)
int a = 10;
int b = a++;
先给b赋值,b=10,a再加一,a=11
2,--(用法与++类似)
前置--(先减一,再使用)
后置--(先使用,再减一)
3,+与-
运算符+对正负值无影响,可省略
运算符-用来改变一个值的正负号,负值加-为正值,正值加-为负值
4,强制类型转换(非必要不使用)
int a = 3.14;
a为int类型,3.14为double类型,类型不一样
int a = (int)3.14;
将3.14强制转换为int类型
5,scanf与printf函数
1,printf函数
使用printf函数需要包含头文件<stdio.h>
printf函数不会在行尾自动添加换行符,所以在结束需要添加\n
1,占位符
占位符:这个位置可以用其他值
占位符的第一个字符为%,第二个字符表示占位符的类型
printf函数的第二个参数为替换占位符的值
输出文本中也可使用多个占位符,参数与占位符为一一对应的,如果参数少于对应的占位符,则会出现随即值
2,占位符列举
%a:十六进制浮点数,输出小写字母
%A:十六进制浮点数,输出大写字母
%c:字符
%e:使用科学计数法的浮点数,指数部分e为小写
%E:用科学计数法的浮点数,指数部分E为大写
%i:整数
%f:小数(包含float与double类型)
%g:六个有效数字的浮点数,整数部分超过六位,就自动转换为科学计数法,小写e
%G:与g相同,大写E
%hd:十进制short int类型
%ho:八进制short int类型
%hx:十六进制short int类型
%hu:unsigned short int类型
%ld:十进制long int 类型
%lo:八进制long int 类型
%lx:十六进制long int 类型
%lu:unsigned long int 类型
%lld:十进制long long int 类型
%llo:八进制long long int 类型
%llx:十六进制long long int 类型
%llu:unsigned long long int 类型
%le:科学计数法的long double 类型浮点数
%lf:long double类型浮点数
%s:字符串
%zd:size_t类型
%%:输出百分号
3,限定宽度
#include<stdio.h>
int main()
{
printf("%5d".123);
return 0;
}
%5d表示这个占位符宽度为5,不满5位,则会在前面添加空格
默认右对齐,左对齐加一个负号,%-5d
4,显示正负号
在%后面加符号即可显示
5,限定小数位数
在5后面加.即可实现 %.2f
最小宽度与小数位数都可以用*输入
6,输出部分字符串
%s表示输入全部字符串,如果想输入开头部分,可以使用%.[m]s指定输出长度
2,scanf函数
使用scanf函数需要包含头文件<stdio.h>
scanf函数的第一个参数为一个格式字符串,里面会放置占位符
变量前面必须加入&运算符因为scanf函数传递的是地址
scanf函数在处理数值占位符时,会自动过滤空白字符
scanf函数的返回值是整数,表示成功读取的变量个数
1,占位符:(与printf函数类似)
%c:字符
%s:字符串
%[ ]:在方括号中指定一组匹配的字符,eg:%[0-9],遇到不在集合内的值,匹配停止
除了%c外,都会自动忽略起首的空白字符
强制跳过字符前的空白字符,可以写成scanf(" %c",%ch)即在%c前加空格
%s不会包含空白字符,无法读取多个单词
2,赋值忽略符:
为了防止用户输入可能不符合预定的格式,scanf函数提供了一个赋值忽略符*
只要把*号加在任何占位符的%后面,该占位符就不会返回值,解析后被抛弃