Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
4年前关闭。
我在网上遇到了一个Fibonacci程序,并对一个代码行有疑问。
该程序使用无符号long long int。
当然,对于无符号长整型整数,fibn
我的编译器gcc将其标记为“ fibn不是函数或指针”。原始程序指出它已在MS Visual C ++ 08上编译。
这行代码如何工作,它是好的编程习惯吗?
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
4年前关闭。
我在网上遇到了一个Fibonacci程序,并对一个代码行有疑问。
该程序使用无符号long long int。
fibn = fib0 + fib1;
if((fibn < 0) || (fibn ULLONG_MAX)){
puts("\nOverflow\n");
当然,对于无符号长整型整数,fibn
我的编译器gcc将其标记为“ fibn不是函数或指针”。原始程序指出它已在MS Visual C ++ 08上编译。
这行代码如何工作,它是好的编程习惯吗?
最佳答案
简单地说,该代码无效。 fibn < 0
永远不会为真,因为fibn
是未签名的,并且任何具有竞争力的编译器都会警告您。fibn ULLONG_MAX
无效,因为它们之间没有比较器。唯一具有某种相似性的原因是fibn == ULLONG_MAX
,这几乎是无用的比较,因为如果fibn
超过ULLONG_MAX
它将环绕。
您实际上要做的是检查fibn
是否小于fib1
,以确定是否发生了环绕。
关于c - 该代码如何工作,这是一种好的做法? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30675127/
10-13 05:54