5.2 基本运算符
5.2.1 赋值运算符:=
术语:左值,右值,数据对象。
5.2.2 加法运算符:+
5.2.3 减法运算符:-
5.2.4 符号运算符:-和+
5.2.5 乘法运算符:*
5.2.6 除法运算符:/
5.2.7 运算符优先级
5.2.8 优先级和求值顺序
结合律只适合共享同一运算对象运算符。
5.3 其他运算符
5.3.1 sizeof运算符和size_t类型
C语言规定:sizeof返回size_t类型的值。这是一个无符号整型。但他不是新类型,是语言定义的标准类型。即typedef机制。
5.3.2 求模运算符:%
求模运算符给出其左侧整数除于右侧整数的余数。
当负数求模时,c99规定如果第一个运算对象是负数,那么求模结果为负数,如果第一个运算对象是正数,那么求模结果为正数,
5.3.3 递增运算符:++
++出现在其作用的变量前,这是前缀模式,即先加一
++出现在其作用的变量后,这是后缀模式。即先使用变量再加一。
5.3.4 递减运算符:--
5.3.5 优先级
递增和递减运算符都有很高的结合优先级,只有圆括号的优先级比他们高。(只能影响一个可修改的左值)
5.4 表达式和语句
5.4.1 表达式
表达式是由运算符和运算对象组成的,每个表达式都有一个值。
5.4.2 语句
语句是c程序的基本构建块
while是一种迭代语句有时也被称为结构化语句。
副作用和序列点
例:num=123;它副作用是将变量的值设置为123,主要目的是给表达式求值。
序列点:是程序执行的点
5.4.3 复合语句(块)
复合语句:是用花括号括起来的一条或多条语句
5.5 类型转化
1.当类型转化出现在表达式时,无论unsigned还是signed的char,short都会被转化为int,如有必要会转化为unsigned int,由于都是较小类型转化为较大类型,所以被称为升级。
2.设计到两种类型的运算,两个值会分别被转为更高的等级。
3.类型的级别依次是
4.赋值表达式语句中,计算结果最终会被转化为被赋值的类型,这个过程有可能导致降级。
5.当作为函数参数传递时char,short被转化为int,float被转化为double函数原型会自动覆盖升级。
5.5.1 强制类型转化运算符
其通用型式为:(type)
5.6 带参数的函数
我们可以说:形参是变量,实参是函数实际调用的值,实参被赋值给相应的形参。
5.11 编程练习
3.
#include <stdio.h> // 输入天数改成周数和天数 int main(void)// { int num=0; int week=0; int day=0; printf("please enter a numbers of days"); scanf("%d",&num); week=num/7; day=num%7; printf("%d day are %d weeks,%d day ",num,week,day); return 0; }
6.
#include <stdio.h> // 输入天数改成周数和天数 int main(void)// { int day=0; printf("please enter number of days"); scanf("%d",&day); while(day<21) { int i=0; int money=0; while(i<day) { i++; money=(i*i)+money; } printf("you earn %d yuan in %d days ",money,day); scanf("%d",&day); } return 0; }
7.
#include <stdio.h> void calculate_print(double n); int main(void)// { double num; printf("please enter a number"); scanf("%lf",&num); calculate_print(num); return 0; } void calculate_print(double n) { n=n*n*n; printf("cubic value is %f",n); }
8.
#include <stdio.h> void calculate_print(double n); int main(void)// { int num1=0; int num2=0; printf("please enter a number "); scanf("%d",&num2); printf("please enter a number "); scanf("%d",&num1); while(num1>0) { printf("%d",num1%num2); printf("please enter a number "); scanf("%d",&num1); } return 0; }
9.while判断条件中,是需要输入值才能判断的。
#include <stdio.h> void temperature(double n); int main(void)// { double num=0.0; printf("please enter a number "); while(scanf("%lf",&num)==1) { temperature(num); printf("please enter a number "); } return 0; } void temperature(double n) { double celsius =0; double kelvin=0; celsius=5.0/9.0*(n-32.0); kelvin=celsius+273.16; printf("celsius is %f,kelvin is %f ",celsius,kelvin); }