OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5458|回复: 8

实际上是一个c语言问题

[复制链接]

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-8-15 00:25:00 | 显示全部楼层 |阅读模式
5金钱
下面是片上flash的一个函数:

u8 STMFLASH_WriteHalfWord(u32 faddr, u16 dat)

{

u8 res;         

res=STMFLASH_WaitDone(0XFF);  

if(res==0)//OK

{

FLASH->CR|=1<<0;//编程使能

*(vu16*)faddr=dat;

                /*写入数据,反之dat= *(vu16*)faddr就是读数据  */

res=STMFLASH_WaitDone(0XFF);//等待操作完成

if(res!=1)//操作成功

{

FLASH->CR&=~(1<<0);//清除PG位.

}

return res;



函数内的两个if条件表达式都可以写成if(res==0)吗?感觉if(res==0)和if(res!=1)是一样的意思。谢谢!如果是一样的意思,用if(res==0)不更简单明了吗?谢谢哪位老师讲解一下。


最佳答案

查看完整内容[请看2#楼]

回复【2楼】正点原子: --------------------------------- 工作时间一长就犯迷糊了,谢谢!还是基本功不扎实,还得多练习!
手艺人要内外兼修。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
 楼主| 发表于 2014-8-15 00:25:01 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
工作时间一长就犯迷糊了,谢谢!还是基本功不扎实,还得多练习!
手艺人要内外兼修。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-15 00:31:33 | 显示全部楼层
要是res=2呢?怎么破?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

56

主题

1237

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2644
金钱
2644
注册时间
2014-2-13
在线时间
518 小时
发表于 2014-8-15 09:30:44 | 显示全部楼层
LZ,如果是bit res = 1呢,怎么破?
技术交流,Sell 中颖单片机,欢迎私信骚扰
回复

使用道具 举报

4

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2014-3-31
在线时间
2 小时
发表于 2014-8-15 09:36:00 | 显示全部楼层
- -帮顶。。。
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
 楼主| 发表于 2014-8-15 11:39:45 | 显示全部楼层
回复【4楼】黑夜之狼:
---------------------------------
兄弟,如果res = =1,则表达式肯定为假嘛。还是基本功不扎实,还得多练习!
手艺人要内外兼修。
回复

使用道具 举报

56

主题

1237

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2644
金钱
2644
注册时间
2014-2-13
在线时间
518 小时
发表于 2014-8-15 23:00:43 | 显示全部楼层
回复【6楼】wangyan915205:
---------------------------------
哈哈,要注意啦,你要是到如果是bit res = 1该怎么办
技术交流,Sell 中颖单片机,欢迎私信骚扰
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
 楼主| 发表于 2014-8-16 14:44:16 | 显示全部楼层
回复【7楼】黑夜之狼:
---------------------------------
用Microsoft visual c++软件验证:代码如下:
#include<stdio.h>
void main()
{
   int res=0;
   if(res==0)
   { 
   printf( "好好! ");
   printf( "%d\n ",res); //\n表示换行显示
   res=890;
   }
   if(res!=1)
   { 
   printf( "好好! ");
   printf( "%d\n ",res); //\n表示换行显示
   res=1;
   }
   if(res!=1)
   { 
   printf( "好好! ");
   printf( "%d\n ",res); //\n表示换行显示
   res=890;
   }

   return ;
}


当res=1,printf就不会输出,说明if表达式为假;当res是任何别的int时,printf都会有输出“好好!”。
我觉得,其实c语言问题,都可以用这种办法来验证。
手艺人要内外兼修。
回复

使用道具 举报

56

主题

1237

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2644
金钱
2644
注册时间
2014-2-13
在线时间
518 小时
发表于 2014-8-16 21:03:49 | 显示全部楼层
回复【8楼】wangyan915205:
---------------------------------
对,我之前调试代码的时候都是用编译器来调试
技术交流,Sell 中颖单片机,欢迎私信骚扰
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-3 17:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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