C语言逻辑语句问题集锦

1.与语句
(1)true情况

bool ret;
	int dollar;
	ret = dollar > 2000;
	int car = 3;
	printf("你的存款有:");
	scanf("%d", &dollar);
	
	if((true) && ((car = 2) > 1)){
	printf("ojbk");
	}
	printf("汽车数量%d", car);
	return 0;

在这里插入图片描述

(2)false情况

int main(void){
	bool ret;
	int dollar;
	ret = dollar > 2000;
	int car = 3;
	printf("你的存款有:");
	scanf("%d", &dollar);
	
	if((false) && ((car = 2) > 1)){
	printf("ojbk");
	}
	printf("汽车数量%d", car);
	return 0;

在这里插入图片描述
2.或语句
(1)true情况

bool ret;
	int dollar;
	ret = dollar > 2000;
	int car = 3;
	printf("你的存款有:");
	scanf("%d", &dollar);
	
	if((true) || ((car = 2) > 1)){
	printf("ojbk");
	}
	printf("汽车数量%d", car);
	return 0;

在这里插入图片描述
(2)false情况

bool ret;
	int dollar;
	ret = dollar > 2000;
	int car = 3;
	printf("你的存款有:");
	scanf("%d", &dollar);
	
	if((false) || ((car = 2) > 1)){
	printf("ojbk");
	}
	printf("汽车数量%d", car);
	return 0;

在这里插入图片描述
一.与的情况:
b:初始化不符合假设条件;要求输入数值

    int a;
	int b = 200;
	printf("请输入a值:");
	scanf("%d",&a);
	printf("请输入b值:");
		scanf("%d",&b);
	if((a > b) && (b > 200)){
		printf("合格指标");
	}
	else{
    printf("返工");
	}
		printf("b = %d",b);
	 return 0;

之前在b初始化了200,但是在后面有输入了b的值,所以之前的初始化便失去效果,可以删除掉。
打印的b值始终为输入的b值

b:初始化不符合假设条件;假设条件为300

  int a;
	int b = 200;
	printf("请输入a值:");
	scanf("%d",&a);
	if((a > b) && ((b = 300) > 200)){
	printf("合格指标");
	}
	else{
	printf("返工\n");
	}
	printf("b = %d",b);
	 return 0;

b被初始化成200,没有再次输入b。
前项符合则b为300;前项不符合则b为200

b:初始化不符合假设条件;要求输入数值;假设条件300

int a;
	int b = 200;
	printf("请输入a值:");
	scanf("%d",&a);
	printf("请输入b值:");
	scanf("%d",&b);
	if((a > b) && ((b = 300) > 200)){
	printf("合格指标");
	}
	else{
	printf("返工\n");
	}
	printf("b = %d",b);
	 return 0;

因为b在初始化之后又有输入,所以这里的初始化又没有了作用,可删除掉此行代码。
前项符合则b为300;前项不符合则b为输入值

二 非语句
b:初始化不符合假设条件;假设条件为300

int main (void){
    int a;
	int b = 200;
	printf("请输入a值:");
	scanf("%d",&a);
	if((a > b) || ((b = 300) > 200)){
	printf("合格指标");
	}
	else{
    printf("返工");
	}
	printf("b = %d",b);
	return 0;

始终满足条件语句 前项错误则b为300;前项正确则b为200
b:初始化不符合假设条件;要求输入数值;假设条件为300

int a;
	int b = 200;
	printf("请输入a值:");
	scanf("%d",&a);
	printf("请输入b值:");
	scanf("%d",&b);
	if((a > b) || ((b = 300) > 200)){
	printf("合格指标");
	}
	else{
    printf("返工");
	}
	printf("b = %d",b);
	return 0;

b的初始化没有作用可以删除掉
始终满足条件语句。 前项错误则b为300;前项正确则b为输入值

b初始化不符合假设条件;要求输入数值

  int a;
	int b = 200;
	printf("请输入a值:");
	scanf("%d",&a);
	printf("请输入b值:");
	scanf("%d",&b);
	if((a > b) || (b > 200)){
	printf("合格指标");
	}
	else{
    printf("返工");
	}
	printf("b = %d",b);
	 return 0;

输出b的数值始终为输入b的数值,不管是否符合条件语句
总结:1.若b 既被初始化,又要被输入数值,则初始化的代码就失效了,就是没用的可以删除了。

2.条件语句中的(b = 300)已经保证条件中的一项满足了。若输入另一项后最终满足了条件语句,则输出的b为300;若输入另一项后没有满足条件语句,则输出的b值:输入值(先考虑)—>初始化值(再考虑)

三,其他逻辑语句

#include <stdio.h>
int main(void){
	char name[32];
	int allowance;
	int all;
	int face;
	int service;
	int happy;
	printf("请输入你的名字:");
	scanf("%s", name);
	printf("请输入你的颜值:");
	scanf("%d", &face);
	allowance = strcmp(name,"Charlie") > 0 ? 100 : 59;
	all = allowance + face >75 ? 90 : 75;
	if(all = 90){
		printf("请进入商务舱\n");
	}
	else{
		printf("请进入经济舱\n");
	}
	service = (allowance*3, face*=2,all = ++face);
	printf("你的服务指数为%d\n",service);
	happy = ++service;
	printf("你的愉快指数为%d\n",happy);
	return 0;
}

我们知道逗号运算符括号里只输出最后一个逗号后的内容。如service = (allowance3, face=2,all = ++face); 最终的service = all ,all = ++face。但是只输出不代表只运算,里面用逗号隔开的内容都会被运算,只是输出最后一个。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值