搜索
bottom↓
回复: 77

if(n=3){ }能引起死循环?

[复制链接]

出75入8汤圆

发表于 2020-6-29 10:05:59 | 显示全部楼层 |阅读模式
if(n=3){   }能引起死循环?少写了一个等号,程序就死循环了。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出20入70汤圆

发表于 2020-6-29 10:08:23 来自手机 | 显示全部楼层
现代编译器一般都会给警告的吧?

出0入0汤圆

发表于 2020-6-29 10:13:02 | 显示全部楼层
编译时的警告直接无视么?

出75入8汤圆

 楼主| 发表于 2020-6-29 10:13:44 | 显示全部楼层
techbaby 发表于 2020-6-29 10:08
现代编译器一般都会给警告的吧?

警告有,但是不会编译不通过。习惯一般不看警告。

出75入8汤圆

 楼主| 发表于 2020-6-29 10:14:23 | 显示全部楼层
Dew_maple 发表于 2020-6-29 10:13
编译时的警告直接无视么?

是真的无视,就是程序多了,修修改改的,上百个警告,也不看了。

出0入0汤圆

发表于 2020-6-29 10:14:56 | 显示全部楼层
这个习惯可不好

出75入8汤圆

 楼主| 发表于 2020-6-29 10:15:52 | 显示全部楼层
noneno 发表于 2020-6-29 10:14
这个习惯可不好

谢谢,小公司,不是大公司,什么事都要去做,老板恨不得一个人当10个人用那种。

出0入0汤圆

发表于 2020-6-29 10:18:37 | 显示全部楼层
ZHAOBAO511 发表于 2020-6-29 10:15
谢谢,小公司,不是大公司,什么事都要去做,老板恨不得一个人当10个人用那种。 ...

警告都不看,  这你一个人的事情,需要10个人去给你擦屁股了。

出75入8汤圆

 楼主| 发表于 2020-6-29 10:23:34 | 显示全部楼层
huangyiting1990 发表于 2020-6-29 10:18
警告都不看,  这你一个人的事情,需要10个人去给你擦屁股了。

不是一点不看,肯定要看,另外公司没你想的那么多人,自己的产品自己负责,从PCB 到客户手中。

出870入263汤圆

发表于 2020-6-29 10:47:08 | 显示全部楼层
默默记下你家公司,不敢用了。

出0入0汤圆

发表于 2020-6-29 10:48:46 | 显示全部楼层
我都是要看0警告才放心

出0入4汤圆

发表于 2020-6-29 10:52:16 | 显示全部楼层
代码都是开最高优化等级,0警告,才可以的。哪怕是定义了一个变量没用到这种警告都要解决才行,这是态度问题。

出0入34汤圆

发表于 2020-6-29 10:55:22 | 显示全部楼层
连警告也不看,强人。

这样,就算运行正常,风险也一样存在。

出95入100汤圆

发表于 2020-6-29 10:58:41 | 显示全部楼层
n=3  是一个真值,所以就死循环了

出95入100汤圆

发表于 2020-6-29 10:59:57 | 显示全部楼层
3==n 我们一般都这样写?编译器会出错,而不是警告  

出0入0汤圆

发表于 2020-6-29 11:05:42 | 显示全部楼层
n=3的值是3,相当于if(3){……}

出75入8汤圆

 楼主| 发表于 2020-6-29 11:42:09 | 显示全部楼层
armstrong 发表于 2020-6-29 10:47
默默记下你家公司,不敢用了。

记清楚一点啊。

出75入8汤圆

 楼主| 发表于 2020-6-29 11:42:36 | 显示全部楼层
281229961 发表于 2020-6-29 10:48
我都是要看0警告才放心

后期梳理。

出75入8汤圆

 楼主| 发表于 2020-6-29 11:43:32 | 显示全部楼层
281229961 发表于 2020-6-29 10:48
我都是要看0警告才放心

谢谢,受教了。

出0入0汤圆

发表于 2020-6-29 11:44:03 | 显示全部楼层
CDI中,这种被发现会被同事鄙视的。
公司要求代码要通过静态工具检查,每次检查结果中的警告和风险提示,都要求给出合理理由。
为了减少麻烦,别说是编译器的警告,就是静态检查工具的警告,我都会尽力消除。

出75入8汤圆

 楼主| 发表于 2020-6-29 11:44:13 | 显示全部楼层
wajlh 发表于 2020-6-29 10:52
代码都是开最高优化等级,0警告,才可以的。哪怕是定义了一个变量没用到这种警告都要解决才行,这是态度问 ...

因为中间一些变量一会用一会不用,所以后期才整理的。

出75入8汤圆

 楼主| 发表于 2020-6-29 11:44:34 | 显示全部楼层
epwwm 发表于 2020-6-29 10:55
连警告也不看,强人。

这样,就算运行正常,风险也一样存在。

后期会整理的。

出75入8汤圆

 楼主| 发表于 2020-6-29 11:44:58 | 显示全部楼层
lhj200304 发表于 2020-6-29 10:58
n=3  是一个真值,所以就死循环了

谢谢,看来C真的要注意了。

出75入8汤圆

 楼主| 发表于 2020-6-29 11:45:34 | 显示全部楼层
lhj200304 发表于 2020-6-29 10:59
3==n 我们一般都这样写?编译器会出错,而不是警告

这样好一点,出错机会少一些。

出75入8汤圆

 楼主| 发表于 2020-6-29 11:46:19 | 显示全部楼层
tlptotop 发表于 2020-6-29 11:44
CDI中,这种被发现会被同事鄙视的。
公司要求代码要通过静态工具检查,每次检查结果中的警告和风险提示,都 ...

什么是静态检查工具?我是后期整理,前期只管写软件。

出75入8汤圆

 楼主| 发表于 2020-6-29 11:46:58 | 显示全部楼层
zhugean 发表于 2020-6-29 11:05
n=3的值是3,相当于if(3){……}

谢谢,少个等号真的很容易出错的。

出0入93汤圆

发表于 2020-6-29 11:54:41 | 显示全部楼层
我就奇了怪了,if语句是个判断语句,能循环?循环?环?...
栽赃也不是这种栽法,if表示虽然用错了,但是这个锅是不背的

出75入8汤圆

 楼主| 发表于 2020-6-29 11:59:11 | 显示全部楼层
takashiki 发表于 2020-6-29 11:54
我就奇了怪了,if语句是个判断语句,能循环?循环?环?...
栽赃也不是这种栽法,if表示虽然用错了,但是这 ...

程序都是循环的,这个语句是在循环中,走到这里就停了。

出50入4汤圆

发表于 2020-6-29 12:01:07 | 显示全部楼层
养成一个习惯,,当你写 if(n=3)  警告,但是不会出错  如果你这样 if(3=n)  那就是错误,编译不过的

10年前,我就这样了,对这种和常数比较的,都这样写

出0入0汤圆

发表于 2020-6-29 12:18:39 | 显示全部楼层
ZHAOBAO511 发表于 2020-6-29 11:46
什么是静态检查工具?我是后期整理,前期只管写软件。

类似于C++ test 之类的工具
另外,推荐 林锐 《高质量C/C++编程》,可以让代码更规范,避免类似的错误

出0入0汤圆

发表于 2020-6-29 12:33:20 | 显示全部楼层
规定写成 3==n, 这样的成本最低

出0入0汤圆

发表于 2020-6-29 12:34:29 | 显示全部楼层
死循环,必须的

出0入0汤圆

发表于 2020-6-29 12:36:13 | 显示全部楼层
所以有的公司在规范里要求3 == n,这种写法,就是避免你遇到的这种情况

出140入158汤圆

发表于 2020-6-29 13:27:26 | 显示全部楼层
楼主不是用中文编译器么,瞎折腾什么C

出0入91汤圆

发表于 2020-6-29 13:33:34 | 显示全部楼层
N==3   和 N=3是有区别的 N=3永远为真

出75入8汤圆

 楼主| 发表于 2020-6-29 14:46:26 | 显示全部楼层
zhuyi25762 发表于 2020-6-29 12:01
养成一个习惯,,当你写 if(n=3)  警告,但是不会出错  如果你这样 if(3=n)  那就是错误,编译不过的
...

这个办法真的可以,谢了。

出75入8汤圆

 楼主| 发表于 2020-6-29 14:47:11 | 显示全部楼层
sbusr 发表于 2020-6-29 12:34
死循环,必须的

对,所有程序不就是 一个大循环?这样一写就进入死循环了。

出75入8汤圆

 楼主| 发表于 2020-6-29 14:48:31 | 显示全部楼层
simplorer 发表于 2020-6-29 12:36
所以有的公司在规范里要求3 == n,这种写法,就是避免你遇到的这种情况

是吗?还是第一次听说。

出75入8汤圆

 楼主| 发表于 2020-6-29 14:49:14 | 显示全部楼层
amigenius 发表于 2020-6-29 13:27
楼主不是用中文编译器么,瞎折腾什么C

中文编译器是大家开发的,写超大型代码还是用C。

出75入8汤圆

 楼主| 发表于 2020-6-29 14:49:55 | 显示全部楼层
ackyee 发表于 2020-6-29 13:33
N==3   和 N=3是有区别的 N=3永远为真

对,只是一不小心就忘了,好像平时说话一样,总有时候会说错的,尽管再小心。

出0入0汤圆

发表于 2020-6-29 14:56:07 | 显示全部楼层
花点时间处理警告吧,省得一个不小心花几天去查问题。
我们的基本要求是0警告,这样才放心

出75入8汤圆

 楼主| 发表于 2020-6-29 14:59:47 | 显示全部楼层
fuu 发表于 2020-6-29 14:56
花点时间处理警告吧,省得一个不小心花几天去查问题。
我们的基本要求是0警告,这样才放心 ...

谢谢,有的鸡肋程序,不要吧,后面又要重写加上,要吧,暂时要注释掉,一注释,就出警告,因为很多变量都有牵扯。

出140入158汤圆

发表于 2020-6-29 15:10:43 | 显示全部楼层
ZHAOBAO511 发表于 2020-6-29 14:59
谢谢,有的鸡肋程序,不要吧,后面又要重写加上,要吧,暂时要注释掉,一注释,就出警告,因为很多变量都 ...

可以把没使用变量的警告屏蔽,就不会警告满天飞,影响真正需要注意的警告了

出140入158汤圆

发表于 2020-6-29 15:11:29 | 显示全部楼层
ZHAOBAO511 发表于 2020-6-29 14:49
中文编译器是大家开发的,写超大型代码还是用C。

您那个中文编译器,貌似就是把C的关键字变成中文而已,换汤不换药啊

出0入4汤圆

发表于 2020-6-29 15:15:11 | 显示全部楼层
eclipse中貌似这种不会警告吧.

出0入8汤圆

发表于 2020-6-29 15:15:22 | 显示全部楼层
amigenius 发表于 2020-6-29 15:10
可以把没使用变量的警告屏蔽,就不会警告满天飞,影响真正需要注意的警告了 ...

这个要求太高了,要别人懂关警告开关,还要懂这些警告的意思,这些都是“架构师”做的事,程序员只要代码跑起来就行了。

出140入158汤圆

发表于 2020-6-29 15:17:53 | 显示全部楼层
canspider 发表于 2020-6-29 15:15
这个要求太高了,要别人懂关警告开关,还要懂这些警告的意思,这些都是“架构师”做的事,程序员只要代码 ...

兄弟您这是在调侃么?

出75入8汤圆

 楼主| 发表于 2020-6-29 15:49:41 | 显示全部楼层
amigenius 发表于 2020-6-29 15:10
可以把没使用变量的警告屏蔽,就不会警告满天飞,影响真正需要注意的警告了 ...

各种变量交织在一起的程序段不少啊,今天屏蔽明天又要打开,小公司说改就改,老板一句话。

出0入8汤圆

发表于 2020-6-29 16:10:34 | 显示全部楼层
amigenius 发表于 2020-6-29 15:17
兄弟您这是在调侃么?

我希望是调侃

出0入0汤圆

发表于 2020-6-29 17:06:07 来自手机 | 显示全部楼层
又是将=当成==用

出0入0汤圆

发表于 2020-6-29 17:07:42 | 显示全部楼层
不是死循环,就是括号里的语句一直能执行到。

出0入0汤圆

发表于 2020-6-29 18:55:33 | 显示全部楼层
一般是常量写在前面,变量写在后面,比如3==n

出0入0汤圆

发表于 2020-6-29 21:17:33 | 显示全部楼层
if也能死循环吗,第一次听说

出10入120汤圆

发表于 2020-6-29 21:50:00 来自手机 | 显示全部楼层
楼主的产品俺也不敢用,任何小程序的一个警告都不会放过,不然无数的麻烦会等着你,更不敢说楼主的大程序了。也是和楼上一样,第一次听说if 死循环现象。

出75入8汤圆

 楼主| 发表于 2020-6-30 08:34:48 | 显示全部楼层
zhikunWang 发表于 2020-6-29 17:07
不是死循环,就是括号里的语句一直能执行到。

对,一直在执行。

出75入8汤圆

 楼主| 发表于 2020-6-30 08:35:17 | 显示全部楼层
kukudi 发表于 2020-6-29 18:55
一般是常量写在前面,变量写在后面,比如3==n

给出这个说法的都是朋友。

出10入46汤圆

发表于 2020-6-30 08:59:10 | 显示全部楼层
wajlh 发表于 2020-6-29 10:52
代码都是开最高优化等级,0警告,才可以的。哪怕是定义了一个变量没用到这种警告都要解决才行,这是态度问 ...

这才是程序员,应有的态度! 赞

出0入0汤圆

发表于 2020-6-30 09:12:04 | 显示全部楼层
我有强迫症,0警告 0错误才算完事,有些没必要的强制转换,只要编译器提醒了,我就一个一个加。

出75入8汤圆

 楼主| 发表于 2020-6-30 09:35:48 | 显示全部楼层
account 发表于 2020-6-30 09:12
我有强迫症,0警告 0错误才算完事,有些没必要的强制转换,只要编译器提醒了,我就一个一个加。 ...

好吧,这个习惯的确好。

出0入0汤圆

发表于 2020-6-30 10:33:53 | 显示全部楼层
为啥?又不是while(n=3){}?

出75入8汤圆

 楼主| 发表于 2020-6-30 10:48:55 | 显示全部楼层
shiva_shiva 发表于 2020-6-30 10:33
为啥?又不是while(n=3){}?

你试一下就知道了,解释不清楚。

出0入0汤圆

发表于 2020-6-30 13:35:35 | 显示全部楼层
ZHAOBAO511 发表于 2020-6-30 10:48
你试一下就知道了,解释不清楚。

我试了,不死循环。

出0入0汤圆

发表于 2020-6-30 14:00:09 | 显示全部楼层
shiva_shiva 发表于 2020-6-30 10:33
为啥?又不是while(n=3){}?

可能他那个if语句块里有能引起死循环的程序

出75入8汤圆

 楼主| 发表于 2020-6-30 14:20:55 | 显示全部楼层
shiva_shiva 发表于 2020-6-30 13:35
我试了,不死循环。

谢谢,我刚了一下,外面有个FOR。

出75入8汤圆

 楼主| 发表于 2020-6-30 14:21:28 | 显示全部楼层
modbus 发表于 2020-6-30 14:00
可能他那个if语句块里有能引起死循环的程序

都是高手啊。

出0入0汤圆

发表于 2020-6-30 16:17:57 | 显示全部楼层
zhuyi25762 发表于 2020-6-29 12:01
养成一个习惯,,当你写 if(n=3)  警告,但是不会出错  如果你这样 if(3=n)  那就是错误,编译不过的
...

虽然if(3==n)有各种好处,但影响阅读,这会让人精神失常,大小便失禁

出0入0汤圆

发表于 2020-6-30 16:27:18 | 显示全部楼层
记住了,以后多多注意

出75入8汤圆

 楼主| 发表于 2020-6-30 17:23:31 | 显示全部楼层
michael.yang 发表于 2020-6-30 16:17
虽然if(3==n)有各种好处,但影响阅读,这会让人精神失常,大小便失禁

没这么夸张吧。

出0入0汤圆

发表于 2020-6-30 17:58:44 | 显示全部楼层
michael.yang 发表于 2020-6-30 16:17
虽然if(3==n)有各种好处,但影响阅读,这会让人精神失常,大小便失禁

终于看到一个反对3==n的了,其实我也反对

出0入4汤圆

发表于 2020-6-30 22:27:39 来自手机 | 显示全部楼层
一个程序几百个警告,所以忽略么

出0入0汤圆

发表于 2020-7-1 13:02:33 | 显示全部楼层
simplorer 发表于 2020-6-29 12:36
所以有的公司在规范里要求3 == n,这种写法,就是避免你遇到的这种情况

这个办法好。

出0入0汤圆

发表于 2020-7-1 22:24:27 | 显示全部楼层
3==n是很久以来的传统写法,不过现代的编译环境已经很强大了,==误写为=都可以依靠警告提示来避免,为了阅读程序愉快,我建议还是写成n==3,用编译环境的强大来避免低级的输入错误,现在已经有这种条件了。

出0入0汤圆

发表于 2020-7-1 23:50:32 来自手机 | 显示全部楼层
zhuyi25762 发表于 2020-6-29 12:01
养成一个习惯,,当你写 if(n=3)  警告,但是不会出错  如果你这样 if(3=n)  那就是错误,编译不过的
...

确实,我也习惯倒着写,避免入坑。也是十年前老司机教的。

出0入0汤圆

发表于 2020-7-2 11:49:38 | 显示全部楼层
经常在一个函数里有编译开关,关闭之后没用到的局部变量就会有警告,我一般在函数末尾加(void)value来消除警告

出75入8汤圆

 楼主| 发表于 2020-7-2 16:18:37 | 显示全部楼层
fuu 发表于 2020-7-2 11:49
经常在一个函数里有编译开关,关闭之后没用到的局部变量就会有警告,我一般在函数末尾加(void)value来消除 ...

这个方法可以啊,怎么加的?

出0入0汤圆

发表于 2020-7-2 16:32:16 | 显示全部楼层
void fun(void)
{
        uint8_t counter = 0;
       
        ...
        ...
        ...
       
        (void)counter;
}

出75入8汤圆

 楼主| 发表于 2020-7-2 16:42:20 | 显示全部楼层
fuu 发表于 2020-7-2 16:32
void fun(void)
{
        uint8_t counter = 0;

谢谢,我试试看,与其最后警告,不如这里加个说明,好办法。

出0入0汤圆

发表于 2020-7-6 22:49:28 | 显示全部楼层
if(3==n)的这种写法,学习了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 22:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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