首页 > 其他 > 详细

C运算符

时间:2019-07-26 23:27:38      阅读:85      评论:0      收藏:0      [点我收藏+]
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

void main1(){
	int a = 7 / 3;  //整数和整数运算,结果为整数2,存储至整型变量a中
	printf("a = %d\n", a);  //输出a = 2

	float b = 7 / 3;  //整数和整数运算,结果为整数2,存储至浮点型变量b中
	printf("b = %f\n", b);  //输出2.000000  精确6位

	float c = 7 / 3.0;  //整数和浮点数运算,自动往高精度转换,结果为浮点数2.333333,存储至浮点型变量c中
	printf("c = %f\n", c);//输出2.333333  精确6位

	//求余运算  %两侧必须是整数
	printf("%d\n", 5 % 3);// 5= 3*1+2   余数是2
	printf("%d\n", 5 % -3);//5 =-3*(-1)+2   余数是2
	printf("%d\n", -5 % 3);//-5=3*(-1)+(-2)   余数是-2

	//不用求余运算符计算余数
	int x = -5;
	int y = 3;
	printf("%d\n", x - (x / y)*y);//利用x/y的整数运算求余
	system("pause");
}

void main2(){
	//整数的十位和个位互换 输入25,输出52
	int num, i, j;
	scanf("%d", &num);
	i = num % 10;
	j = num / 10;
	num = i * 10 + j;
	printf("the output -%d", num);
}
void main3(){
	//5++;
	//(n+3)++;
	//自增自减不能用于表达式或常量,优先级高于四则运算
	int num = 3;
	printf("%d",-num++);  //-3 等价于-(num++)
	printf("%d", num); //4
	int x, y;
	printf("%d", x+++y); //等价于 (x++)+y
}

void main4(){
	//5=5; 错误,常量,表达式都不能为左值,只有变量可以
	int a=10;
	int a, b,c;
	a += 1.3;  //等价于 a=a+1.3    a=11.3  因为a是整型,会发生类型转换,所以a=11;
	a = b = c = 5;  //赋值运算符是从右至左执行
}

void main5(){
	int a = 2;
	a %= 4 - 1; //a %=(4-1)  赋值运算符从右至左  a%=3    a=2;
	a += a *= a -= a *= 3;//  a += a *= a -= (a *= 3)  a += a *= a -=6  此时a=6
						//a += a *= (a -=6)    a += a *=0  此时a=0
						//  a += (a *=0)  a+=0     此时a=0
	//a=a+(a=a*(a=a-(a=a*3)))

	//逗号表达式是用逗号连接的多个表达式,他的优先级最低,从左至右依次求值,取最后的值
	//int a = 1, 2;  错误,因为赋值运算符优先级大于逗号运算符,该式会先计算a=1,此时逗号只是分格符
	int a = (1, 2);  //先计算1,再计算2,把2赋值给a
	//1、逗号可以连接多个语句
	printf("Hello"), printf("World"),getchar();   //输出HelloWorld
	//2、逗号起到间隔的作用
	printf("%d%d%d",10,20,36);  

	//关系表达式成立是1,不成立是0,顺序是从左至右
	1 < 2 < 3;  //输出1;实际计算流程为1<2成立,关系表达式为1,则该表达式为1<3,还是成立,整体表达式为1
	a = 1 < 2 == 2;  //a=0;   关系运算符优先级大于赋值,1<2成立,为0,0不等于2,关系表达式为0

	//<,>,<=,>=是同一优先级,比==,!=优先级高  同等运算符运算考虑结合性
	0 == 1 > 2;  //1    先看1>2,不成立为0,0==0,成立,结果为1
	//关系运算符操作数可以是字符,整数,实数
	//浮点类型一般不用做关系比较,因为float只能精确6-7位,double只能精确13-14位、
}

#define CMD "calc";
void main(){
	//字符串常量比较只能比较相等于不相等,比较的是他们的内存地址,内存地址相同则相等,不同则不等
	//定义常量时,常量不会被修改,系统会给一片固定的空间给常量,常量可以有多个引用,但其内存地址和内容都不会变
	//CMD 和"calc"两个常量指向了同一个地址
	CMD=="calc" ? system(CMD) : system("pause"); //打开cmd窗口 

	//不等的常量calc1会另外开辟内存空间,与calc不是同一地址
	CMD == "calc1" ? system(CMD) : system("pause");//不打开cmd窗口 

	//字符串变量,系统会给字符串变量分配空间,不同内存地址
	char str[]="calc";
	CMD == str ? system(CMD) : system("pause"); //不打开cmd窗口 
}

 

C运算符

原文:https://www.cnblogs.com/luoxuw/p/11253145.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!