运算符(3)

基本运算符

运算符含义
=赋值运算符,从右往左
+加法,使两侧相加,二元运算符
+减法,二元运算符
-和+减号可标明或改变一个值的代数符号
*乘法
/除法

关系运算符

运算符含义
<小于
<=小于或等于
==等于
>=大于或等于
>大于
!=不等于

运算符优先级

运算符优先级(从高到低)

运算符结合律
()从左往右
- + ++ - - sizeof从右往左
* / %从左往右
+ -从左往右
< > <= >=从右往左
== !=从左往右
=从右往左

其他运算符

c语言大约有40个运算符

sizeof运算符和size_t类型

#include<stdio.h>
int main()
{
	int n=0;
	size_t intsize=sizeof(int);
	printf("n=%d,%u,%u",n,sizeof n,intsize);
 } 
0,4,4
  • 语言规定,sizeof返回size_t类型,这是一个无符号整数类型。c有一个typedef机制,运行程序员为现有类型创建别名列如:
typedef double real;//这样real就是double的别名,可以使用real声明一个变量
real deal;//使用typedef
  • 类似的,c头文件系统可以使用typedef把size_t作为unsigned int 或unsigned long的别名,这样在使用size_t类型时,编译器会根据不同的系统替换标准类型

求模运算符:%

求模运算符用与整数运算。求模运算符给出其左侧整数除以右侧整数的余数。如:13%5得3。只能用于整数的运算

//把描述转换成分和秒
#include<stdio.h>
#define SEC_PER_MIN 60
int main()
{
   int sec,min,left;
   
   printf("请输入秒数\n");
   printf("输入数字如果小于等于0则退出!\n"); 
   scanf("%d",&sec);
   while(sec>0)
   {
   	min=sec/SEC_PER_MIN;
   	left=sec%SEC_PER_MIN;
   	printf("%d秒=%d分%d秒\n",sec,min,left);
   	printf("输入数字如果小于等于0则退出!\n"); 
   	scanf("%d",sec);
   }
   printf("bye~");
   return 0;
} 
请输入秒数
输入数字如果小于等于0则退出!
90
90=130秒
输入数字如果小于等于0则退出!
0
bye~

自增(++)、自减(- -)运算符:

自增(++)、自减(- -)运算符作用是使变量的值加1或减1。分为两种形式:前缀形式和后缀形式

  • 前缀形式:q = ++i;//首先,i递增1;然后把结果赋给q
  • 后缀形式:q = i++;//首先,将i赋给q;然后i递增1
#include<stdio.h>

int main()
{
   int i,j,q;
   i=3;
   j=i++;
   q=++i;
   printf("j=%d q=%d",j,q);
   return 0;
} 
j=3 q=5;
  • 首先,i的值赋给j,此时j等于3;然后i递增1;此时i等于4;
  • 到下一条语句,i先递增1,此时i等于5,赋给q,所以q等于5;

例如:计算多个不同鞋码对应的脚长

#include<stdio.h>
#define ADJUST 7.31
int main()
{
	const double SCALE =0.333;
	double shoe,foot;
	shoe=2.0;
	while(++shoe<18.5)
	{
		foot=SCALE*shoe+ADJUST;
		printf("%10.1f %20.2f inche\n",shoe,foot);	
	}
	return 0;
 } 
        3.0                 8.31 inche
       4.0                 8.64 inche
       5.0                 8.97 inche
       6.0                 9.31 inche
       7.0                 9.64 inche
       8.0                 9.97 inche
       9.0                10.31 inche
      10.0                10.64 inche
      11.0                10.97 inche
      12.0                11.31 inche
      13.0                11.64 inche
      14.0                11.97 inche
      15.0                12.31 inche
      16.0                12.64 inche
      17.0                12.97 inche
      18.0                13.30 inche
  • 运行过程:首先,shoe递增1,然后和18.5比较。如果递增后的值小于18.5,则执行花括号里的语句。然后,shoe在递增1,重复刚才的步骤,知道shoe的值不小于18.5为止。

优先级

自增、自减优先级很高仅次于圆括号。比如:x * y++实际上是x*(y++),而不是(x*y)++,后者无效。因为自增自减运算符只能影响一个变量,普遍的说只能影响一个可修改的左值,x * y本身是不可修改的左值。
列如:x=2;n=3; nextnum=(y + n++)*6=?
把各值带入nextnum=5 * 6=30

  • 如果n++只是表达式的一部分,可将其视为"先使用n,再递增";而++n,则表示"先递增,在使用"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值