C语言:算术运算符、关系运算符与逻辑运算符

目录

一、算术运算符

二、关系运算符

三、逻辑运算符


一、算术运算符

#define _CRT_SECURE_NO_WARNINGS
#include 

int main()
{
	int a = 4 + 5 * 2 - 6 / 3 + 11 % 4;//4+10-2+3=15
	printf("%d\n",a);
	scanf("%d", &a);
	printf("a=%d\n", a);//如果输入1234,输出4321
	while (a != 0)
	{
		printf("%d", a % 10);
		a = a / 10;
	}
	return 0;
}

二、关系运算符

#define _CRT_SECURE_NO_WARNINGS
#include 

int main()
{
	int a = 2;
	if (3 < a < 10)//无论a等于多少,都为真
	{
		printf("a is right");
	}
	else
	{
		printf("a is wrong");
	}
	return 0;
}

事实上,无论a等于多少,都会执行printf(“a is right”);这条语句,因为两个<的优先级一致,所以从左到右按顺序执行

如果a大于3,结果为真(即1),1小于10,故总体为真;

如果a小于3,结果为假(即0),0小于10,故总体为真。

所以关系运算符不能这样用,如果要表示a>3同时a<10,要使用逻辑运算符

三、逻辑运算符

将上面的代码修改成

#define _CRT_SECURE_NO_WARNINGS
#include 

int main()
{
	int a = 2;
	if (3 < a && a < 10)
	{
		printf("a is right");
	}
	else
	{
		printf("a is wrong");
	}
	return 0;
}

练习:判断两个浮点数是否相等

写下面一段代码

#define _CRT_SECURE_NO_WARNINGS
#include 

int main()
{
	float f = 234.56;

	return 0;
}

进行调试,可以知道内存中f其实存的并不是准确的234.56,如图

C语言:算术运算符、关系运算符与逻辑运算符_第1张图片

 所以如果写下面的代码不能进行正确的判断

#define _CRT_SECURE_NO_WARNINGS
#include 

int main()
{
	float f = 234.56;
	if (f == 234.56)
	{
		printf("f is equal to 234.56\n");
	}
	else
	{
		printf("f is not equal to 234.56");
	}
	return 0;
}

结果如下

C语言:算术运算符、关系运算符与逻辑运算符_第2张图片

所以必须用下面这种方法进行判断,原理是浮点数的精确度是7位

#define _CRT_SECURE_NO_WARNINGS
#include 

int main()
{
	float f = 234.56;
	if (f - 234.56 > -0.0001 && f - 234.56 < 0.0001)
	{
		printf("f is equal to 234.56\n");
	}
	else
	{
		printf("f is not equal to 234.56");
	}
	return 0;
}

 C语言:算术运算符、关系运算符与逻辑运算符_第3张图片

练习:用c%输出0-128之间的整型数

 错误代码

#define _CRT_SECURE_NO_WARNINGS
#include 

int main()
{
	char a;
	scanf("%d", &a);
	printf("%c\n", a);
	return 0;
}

C语言:算术运算符、关系运算符与逻辑运算符_第4张图片

原因:由于char占1个字节,int占四个字节,输入四个字节的数,要求输出char类型的a(1个字节)超出空间。

正确代码

#define _CRT_SECURE_NO_WARNINGS
#include 

int main()
{
	int a;
	scanf("%d", &a);
	printf("%c\n", a);
	return 0;
}

此时的a也是四个字节的整型,0-128之间的整型数可以用c%输出。

你可能感兴趣的:(C语言,c语言,开发语言,后端)