由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C怪问题一个
相关主题
visual studio 编译器怎么关掉warning?does any one know the answer?
C++11的lambda不会破坏可读性吗?namespace 问题
为什么在overloading中,friend <<不能读取private值呢?写code都推一起很牛逼吗
大家觉得C++复杂在哪里?why use static function here?
急!问个有关aligment的问题。Java banned operator overloading
[合集] Intel 9编译器在vc 6.0的环境里编译openmp的问题请问一个implicit conversion的问题(C++)
以下两个C 代码是不是完全等价?这个问题怎么答?
有人上过coursera的compiler么?one question about overloading operator delete
相关话题的讨论汇总
话题: long话题: class话题: my话题: def话题: warning
进入Programming版参与讨论
1 (共1页)
P*****n
发帖数: 51
1
借着人气问个疑问。
还是一年前的事情,到一家大公司面试,其中一个亚裔MM,让我指出一段C代码中所有
BUG。
中间不知道是即兴而为还是故意迷惑,她指着一行 if ( 0 == x ) {
问我如果改为通常的 if ( x == 0 ) {
有什么差别?我说没有。当时想到汇编代码寄存器使用可能会不完全相同,不过感觉和
上下文毫无关联。她听了后也不置可否继续讨论后面问题。
有高手知道些成 0 == X 的形式究竟有什么好处/坏处?
k****f
发帖数: 3794
2
0==x一不小心少了一个=,编译器会报错的
x==0就不会的。if(x=0)是合法的用法。

【在 P*****n 的大作中提到】
: 借着人气问个疑问。
: 还是一年前的事情,到一家大公司面试,其中一个亚裔MM,让我指出一段C代码中所有
: BUG。
: 中间不知道是即兴而为还是故意迷惑,她指着一行 if ( 0 == x ) {
: 问我如果改为通常的 if ( x == 0 ) {
: 有什么差别?我说没有。当时想到汇编代码寄存器使用可能会不完全相同,不过感觉和
: 上下文毫无关联。她听了后也不置可否继续讨论后面问题。
: 有高手知道些成 0 == X 的形式究竟有什么好处/坏处?

j***i
发帖数: 3096
3
就是把typo提前到编译时报错,而不是到运行时再Debug。

【在 k****f 的大作中提到】
: 0==x一不小心少了一个=,编译器会报错的
: x==0就不会的。if(x=0)是合法的用法。

D*********s
发帖数: 555
4
这个习惯是一定要养成的,常量能放前面就放前面

所有
觉和

【在 k****f 的大作中提到】
: 0==x一不小心少了一个=,编译器会报错的
: x==0就不会的。if(x=0)是合法的用法。

c*****t
发帖数: 1879
5
其实我觉得不好。不错 = vs == 是个问题,但是这样同时是读代码
困难了很多。if (v == 0) 的意义就是查 v 的情况。在快速读码的
情况下,读 if (v 部分其实就可以了。而 if (0 == v) 相对来说
费劲很多(比如 if (MY_LONG_LONG_LONG_DEF == ...)。这有主次
不分的感觉。
而快速读码(一页 50 行几秒中扫完)的诀窍就是重点只读 =, ==
以前的东西,后面的部分基本上就靠猜。如果后面和预计的不符合,
那么该行属于相对要注意的(bug / feature)。这和读英语的习惯
一样。读一某段话的 topic sentence (一般第一句话),后面的
句子稍微瞟一下就是了。而编程里,=, == 以前的部分就是 topic
sentence 。虽然你可以不按照这习惯写,但是让读的人难受很多。
另外只读 if (v 是因为如果 if (v ==) ..else if (v == ) ...
else if (v ==) 的情况其实写 case switch 更好。所以在使用 if
的情况下,v 部分就是主要部分,然后找 consta

【在 D*********s 的大作中提到】
: 这个习惯是一定要养成的,常量能放前面就放前面
:
: 所有
: 觉和

t****t
发帖数: 6806
6
虽然我也觉得不好, 但我没你那么多理由. 你强!

【在 c*****t 的大作中提到】
: 其实我觉得不好。不错 = vs == 是个问题,但是这样同时是读代码
: 困难了很多。if (v == 0) 的意义就是查 v 的情况。在快速读码的
: 情况下,读 if (v 部分其实就可以了。而 if (0 == v) 相对来说
: 费劲很多(比如 if (MY_LONG_LONG_LONG_DEF == ...)。这有主次
: 不分的感觉。
: 而快速读码(一页 50 行几秒中扫完)的诀窍就是重点只读 =, ==
: 以前的东西,后面的部分基本上就靠猜。如果后面和预计的不符合,
: 那么该行属于相对要注意的(bug / feature)。这和读英语的习惯
: 一样。读一某段话的 topic sentence (一般第一句话),后面的
: 句子稍微瞟一下就是了。而编程里,=, == 以前的部分就是 topic

c*****t
发帖数: 1879
7
俺是唐大仙的传人 :)

【在 t****t 的大作中提到】
: 虽然我也觉得不好, 但我没你那么多理由. 你强!
h****e
发帖数: 2125
8
这篇应该被G上。

【在 c*****t 的大作中提到】
: 其实我觉得不好。不错 = vs == 是个问题,但是这样同时是读代码
: 困难了很多。if (v == 0) 的意义就是查 v 的情况。在快速读码的
: 情况下,读 if (v 部分其实就可以了。而 if (0 == v) 相对来说
: 费劲很多(比如 if (MY_LONG_LONG_LONG_DEF == ...)。这有主次
: 不分的感觉。
: 而快速读码(一页 50 行几秒中扫完)的诀窍就是重点只读 =, ==
: 以前的东西,后面的部分基本上就靠猜。如果后面和预计的不符合,
: 那么该行属于相对要注意的(bug / feature)。这和读英语的习惯
: 一样。读一某段话的 topic sentence (一般第一句话),后面的
: 句子稍微瞟一下就是了。而编程里,=, == 以前的部分就是 topic

D*********s
发帖数: 555
9
不大同意,如果一个==前后的东西都能提高你读代码速度的话,这代码也
太容易读了。

【在 c*****t 的大作中提到】
: 其实我觉得不好。不错 = vs == 是个问题,但是这样同时是读代码
: 困难了很多。if (v == 0) 的意义就是查 v 的情况。在快速读码的
: 情况下,读 if (v 部分其实就可以了。而 if (0 == v) 相对来说
: 费劲很多(比如 if (MY_LONG_LONG_LONG_DEF == ...)。这有主次
: 不分的感觉。
: 而快速读码(一页 50 行几秒中扫完)的诀窍就是重点只读 =, ==
: 以前的东西,后面的部分基本上就靠猜。如果后面和预计的不符合,
: 那么该行属于相对要注意的(bug / feature)。这和读英语的习惯
: 一样。读一某段话的 topic sentence (一般第一句话),后面的
: 句子稍微瞟一下就是了。而编程里,=, == 以前的部分就是 topic

c*****t
发帖数: 1879
10
readability > debugability
等你编程多了,看的 code 多了,就明白了。

【在 D*********s 的大作中提到】
: 不大同意,如果一个==前后的东西都能提高你读代码速度的话,这代码也
: 太容易读了。

相关主题
[合集] Intel 9编译器在vc 6.0的环境里编译openmp的问题does any one know the answer?
以下两个C 代码是不是完全等价?namespace 问题
有人上过coursera的compiler么?写code都推一起很牛逼吗
进入Programming版参与讨论
t****t
发帖数: 6806
11
我没你这么多理由, 我的理由就一个: 编译器会提醒你的. 编译器会做的事情, 为什么
要我做?

【在 c*****t 的大作中提到】
: readability > debugability
: 等你编程多了,看的 code 多了,就明白了。

P*****f
发帖数: 2272
12
话说我用g++ 3.4.1 -Wall 编译没给警告
记得以前讨论时说是有的?

我没你这么多理由, 我的理由就一个: 编译器会提醒你的. 编译器会做的事情, 为什么
要我做?

【在 t****t 的大作中提到】
: 我没你这么多理由, 我的理由就一个: 编译器会提醒你的. 编译器会做的事情, 为什么
: 要我做?

t****t
发帖数: 6806
13
3.4.1没用过.小版本我升得很勤, 一上来就是3.4.4

【在 P*****f 的大作中提到】
: 话说我用g++ 3.4.1 -Wall 编译没给警告
: 记得以前讨论时说是有的?
:
: 我没你这么多理由, 我的理由就一个: 编译器会提醒你的. 编译器会做的事情, 为什么
: 要我做?

D*********s
发帖数: 555
14
偶程序也编了10几年了,还从来没遇到过能这么快上手以至于一个==都能影响你阅读
速度的程序。也许是偶太笨,也许时候碰到的都太难,who knows。
争论这个没啥意思,大家求同存异好了。

【在 c*****t 的大作中提到】
: readability > debugability
: 等你编程多了,看的 code 多了,就明白了。

m****o
发帖数: 114
15
if the code is hard to read, it is most likely a problem with your design,
not a problem with the code
in terms of readability for this special case, i think "if ( 0 == MY_LONG_LONG_LONG_DEF )" is far easier to read than "if ( MY_LONG_LONG_LONG_DEF == 0 )" to me at least.

【在 c*****t 的大作中提到】
: readability > debugability
: 等你编程多了,看的 code 多了,就明白了。

N********n
发帖数: 8363
16

I make that mistake a lot when I code C# and TSQL at the same time.

【在 D*********s 的大作中提到】
: 这个习惯是一定要养成的,常量能放前面就放前面
:
: 所有
: 觉和

z*****m
发帖数: 98
17
VS8 里if(x=0)会出warning,debug的时候停在那里问你是不是你想要这样的operation。

【在 P*****n 的大作中提到】
: 借着人气问个疑问。
: 还是一年前的事情,到一家大公司面试,其中一个亚裔MM,让我指出一段C代码中所有
: BUG。
: 中间不知道是即兴而为还是故意迷惑,她指着一行 if ( 0 == x ) {
: 问我如果改为通常的 if ( x == 0 ) {
: 有什么差别?我说没有。当时想到汇编代码寄存器使用可能会不完全相同,不过感觉和
: 上下文毫无关联。她听了后也不置可否继续讨论后面问题。
: 有高手知道些成 0 == X 的形式究竟有什么好处/坏处?

c*****t
发帖数: 1879
18
我这里速读是指一目十行,但求大致理解流程,理解 documentation
里没有提到的某些问题。并不是要达到能 debug 的水平。一般 100
行的 class 应该 4-5 秒内扫完用途并了解大概。Java library
随便一个就是成百上千的 class,没时间一个个读理解,但是出现问
题(比如稍微不符合需要),写 patch 解决。或者同事写的程序不工
作要你帮忙查哪里出问题,不可能一句句理解。速读就很重要。

【在 D*********s 的大作中提到】
: 偶程序也编了10几年了,还从来没遇到过能这么快上手以至于一个==都能影响你阅读
: 速度的程序。也许是偶太笨,也许时候碰到的都太难,who knows。
: 争论这个没啥意思,大家求同存异好了。

g****n
发帖数: 14
19
Cannot agree more.
When coding, I would enable all possible compiler warnings. In some cases, I
use #pragma to disable warnings in some lines. When diabling a warning,
however, you need to know clearly what you are doing. IMO, treating compiler
warning as error is a good practice in big projects.

【在 c*****t 的大作中提到】
: 我这里速读是指一目十行,但求大致理解流程,理解 documentation
: 里没有提到的某些问题。并不是要达到能 debug 的水平。一般 100
: 行的 class 应该 4-5 秒内扫完用途并了解大概。Java library
: 随便一个就是成百上千的 class,没时间一个个读理解,但是出现问
: 题(比如稍微不符合需要),写 patch 解决。或者同事写的程序不工
: 作要你帮忙查哪里出问题,不可能一句句理解。速读就很重要。

D*********s
发帖数: 555
20
你说的也有道理,不过偶从来没用过C++,C写的程序从来都是driver没有算法,
想速度那是难上加难,呵呵

【在 c*****t 的大作中提到】
: 我这里速读是指一目十行,但求大致理解流程,理解 documentation
: 里没有提到的某些问题。并不是要达到能 debug 的水平。一般 100
: 行的 class 应该 4-5 秒内扫完用途并了解大概。Java library
: 随便一个就是成百上千的 class,没时间一个个读理解,但是出现问
: 题(比如稍微不符合需要),写 patch 解决。或者同事写的程序不工
: 作要你帮忙查哪里出问题,不可能一句句理解。速读就很重要。

相关主题
why use static function here?这个问题怎么答?
Java banned operator overloadingone question about overloading operator delete
请问一个implicit conversion的问题(C++)这段code有啥问题?
进入Programming版参与讨论
S******8
发帖数: 24594
21
要是她没有特别指明是C而不是C++的话,可能她期待的答案是Overload operator==的
合法性吧。

【在 P*****n 的大作中提到】
: 借着人气问个疑问。
: 还是一年前的事情,到一家大公司面试,其中一个亚裔MM,让我指出一段C代码中所有
: BUG。
: 中间不知道是即兴而为还是故意迷惑,她指着一行 if ( 0 == x ) {
: 问我如果改为通常的 if ( x == 0 ) {
: 有什么差别?我说没有。当时想到汇编代码寄存器使用可能会不完全相同,不过感觉和
: 上下文毫无关联。她听了后也不置可否继续讨论后面问题。
: 有高手知道些成 0 == X 的形式究竟有什么好处/坏处?

c********x
发帖数: 84
22

my understand is no difference, 0 == x would excute faster.

【在 P*****n 的大作中提到】
: 借着人气问个疑问。
: 还是一年前的事情,到一家大公司面试,其中一个亚裔MM,让我指出一段C代码中所有
: BUG。
: 中间不知道是即兴而为还是故意迷惑,她指着一行 if ( 0 == x ) {
: 问我如果改为通常的 if ( x == 0 ) {
: 有什么差别?我说没有。当时想到汇编代码寄存器使用可能会不完全相同,不过感觉和
: 上下文毫无关联。她听了后也不置可否继续讨论后面问题。
: 有高手知道些成 0 == X 的形式究竟有什么好处/坏处?

a****l
发帖数: 8211
23
我的看法是做事要仔细,宁可慢点,不要误导.

【在 c*****t 的大作中提到】
: 我这里速读是指一目十行,但求大致理解流程,理解 documentation
: 里没有提到的某些问题。并不是要达到能 debug 的水平。一般 100
: 行的 class 应该 4-5 秒内扫完用途并了解大概。Java library
: 随便一个就是成百上千的 class,没时间一个个读理解,但是出现问
: 题(比如稍微不符合需要),写 patch 解决。或者同事写的程序不工
: 作要你帮忙查哪里出问题,不可能一句句理解。速读就很重要。

x******g
发帖数: 3952
24
您是够慢的,一个多月才re上这篇。:-) j/k...

【在 a****l 的大作中提到】
: 我的看法是做事要仔细,宁可慢点,不要误导.
f*****Q
发帖数: 1912
25
Peter Norton 有本书里面说这么着比较好。
D*********s
发帖数: 555
26
养成习惯,少犯错误
偶前两天就碰到了一次,写成了0=x了,编译马上报错。你要是习惯了写x==0,
少写一个等号可没人给你报错。

【在 f*****Q 的大作中提到】
: Peter Norton 有本书里面说这么着比较好。
c********x
发帖数: 84
27

the difference is the rvalue determine the type of the lvalue needed to cast.
if ( 0 == x ) if x is float, 0 is casted to 0.0f.

【在 P*****n 的大作中提到】
: 借着人气问个疑问。
: 还是一年前的事情,到一家大公司面试,其中一个亚裔MM,让我指出一段C代码中所有
: BUG。
: 中间不知道是即兴而为还是故意迷惑,她指着一行 if ( 0 == x ) {
: 问我如果改为通常的 if ( x == 0 ) {
: 有什么差别?我说没有。当时想到汇编代码寄存器使用可能会不完全相同,不过感觉和
: 上下文毫无关联。她听了后也不置可否继续讨论后面问题。
: 有高手知道些成 0 == X 的形式究竟有什么好处/坏处?

k*k
发帖数: 508
28
大仙,你就收了神通吧~

cast.

【在 c********x 的大作中提到】
:
: the difference is the rvalue determine the type of the lvalue needed to cast.
: if ( 0 == x ) if x is float, 0 is casted to 0.0f.

t****t
发帖数: 6806
29
肯定是来捣蛋的……

【在 k*k 的大作中提到】
: 大仙,你就收了神通吧~
:
: cast.

k*k
发帖数: 508
30
这儿也没啥油水啊,捣蛋有啥好处呢?

【在 t****t 的大作中提到】
: 肯定是来捣蛋的……
相关主题
C++ func overload questionC++11的lambda不会破坏可读性吗?
How to overload global new operator?为什么在overloading中,friend <<不能读取private值呢?
visual studio 编译器怎么关掉warning?大家觉得C++复杂在哪里?
进入Programming版参与讨论
D*********s
发帖数: 555
31
kill time, and see others upset

【在 k*k 的大作中提到】
: 这儿也没啥油水啊,捣蛋有啥好处呢?
t****u
发帖数: 8614
32
You are right!
Actually in C++ world, (0==x) is a bad style.
The x might be a class instance, to improve the performance,
you might have x's class overload the operator==(int val) function.
Then (0==x) will invoke an implicit conversion (meaning convert 0
to x class type, x's class has a construct with integer as parameter).
Typically, in terms of generic programming, which template is involved
(e.g. STL), the (0==x) style shall be avoided.
Plus, "if (x=0)" will be caught as a warning by most co

【在 c*****t 的大作中提到】
: 其实我觉得不好。不错 = vs == 是个问题,但是这样同时是读代码
: 困难了很多。if (v == 0) 的意义就是查 v 的情况。在快速读码的
: 情况下,读 if (v 部分其实就可以了。而 if (0 == v) 相对来说
: 费劲很多(比如 if (MY_LONG_LONG_LONG_DEF == ...)。这有主次
: 不分的感觉。
: 而快速读码(一页 50 行几秒中扫完)的诀窍就是重点只读 =, ==
: 以前的东西,后面的部分基本上就靠猜。如果后面和预计的不符合,
: 那么该行属于相对要注意的(bug / feature)。这和读英语的习惯
: 一样。读一某段话的 topic sentence (一般第一句话),后面的
: 句子稍微瞟一下就是了。而编程里,=, == 以前的部分就是 topic

1 (共1页)
进入Programming版参与讨论
相关主题
one question about overloading operator delete急!问个有关aligment的问题。
这段code有啥问题?[合集] Intel 9编译器在vc 6.0的环境里编译openmp的问题
C++ func overload question以下两个C 代码是不是完全等价?
How to overload global new operator?有人上过coursera的compiler么?
visual studio 编译器怎么关掉warning?does any one know the answer?
C++11的lambda不会破坏可读性吗?namespace 问题
为什么在overloading中,friend <<不能读取private值呢?写code都推一起很牛逼吗
大家觉得C++复杂在哪里?why use static function here?
相关话题的讨论汇总
话题: long话题: class话题: my话题: def话题: warning