找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7457|回复: 6
打印 上一主题 下一主题
收起左侧

C语言if(表达式)中表达式不赋值是不是默认为表达式为真的意思

[复制链接]
跳转到指定楼层
楼主
ID:521921 发表于 2019-5-31 16:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大咖:

         我是小白,在学习单片机C语言过程中,看到有些if(表达式)中的表达式没有赋值(如下内容中的flag),就直接继续写条件下的表达式:

以下程序内容:
我的疑惑:下面程序中,bit flag1s = 0; //1 秒定时标志,在main函数中,while(1)循环中, if (flag1s) //每秒执行一次交通灯刷新,这个条件表达式直接是一个flag1s,没有赋值,旁边的解释说“每秒执行一次交通灯刷新”,这个意思就是flag1s=1,这里不写这个赋值,是不是就C语言中就默认是为=1呢?

单片机C语言源程序如下:
#include <reg52.h>
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char code LedChar[] = { //数码管显示字符转换表
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
unsigned char LedBuff[7] = { //数码管+独立 LED 显示缓冲区
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
bit flag1s = 0; //1 秒定时标志
unsigned char T0RH = 0; //T0 重载值的高字节
unsigned char T0RL = 0; //T0 重载值的低字节
void ConfigTimer0(unsigned int ms);
void TrafficLight();
void main()
{
EA = 1; //开总中断
ENLED = 0; //使能数码管和 LED
ADDR3 = 1;
ConfigTimer0(1); //配置 T0 定时 1ms

while (1)
{
if (flag1s) //每秒执行一次交通灯刷新
{
flag1s = 0;
TrafficLight();
}
}
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:415123 发表于 2019-5-31 20:21 | 只看该作者
代码不全,应该在某个定时计数1S的代码里,有bit flag1s = 1;语句。if(flag1s)语句是判断flag1s是否为0或非0,所以赋值在别的代码里,非0就是真,就执行刷新代码。
回复

使用道具 举报

板凳
ID:514901 发表于 2019-5-31 23:02 | 只看该作者
if(表达式)中的表达式不一定需要赋值。if(),括号里面是判断括号里面的内容是真还是假,0就是假,非零就是真,记住不只是1为真,而是非零的数都为真,比如括号里的内容是语句x==1,就是判断x是否等于1,如果x等于则得到非零值,不等于1则为0。所以说括号里的内容不一定要是x==1这种类型的判断语句,也可以是非零值或者0或者变量。
回复

使用道具 举报

地板
ID:552204 发表于 2019-5-31 23:46 来自手机 | 只看该作者
if判断的是括号中的逻辑值,如果没有赋值,括号中的内容如果不是0,那么对于其他任何数都为逻辑1
回复

使用道具 举报

5#
ID:511890 发表于 2019-6-1 01:08 | 只看该作者
if (flag1s)  flag1s就是一个表达式。相当于flag1s>0括号中的表达式可以是判断式,也可以是常量,也可以是变量。就如if(flag1s) 当flag1s=0时为假,flag1s不等于0时为真。
回复

使用道具 举报

6#
ID:550032 发表于 2019-6-2 14:39 | 只看该作者
判断是真是假;是真就执行if下面的语句,是假不执行if后面的语句
回复

使用道具 举报

7#
ID:521921 发表于 2019-6-3 09:36 | 只看该作者
明白了,谢谢各位!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表