相关疑难解决方法(0)

C++中的" - >"运算符是什么?

看完后隐藏功能和C++/STL的暗角comp.lang.c++.moderated,我完全惊讶的是,下面的代码片断编译并在两个Visual Studio 2008和G ++ 4.4的工作.

这是代码:

#include <stdio.h>
int main()
{
    int x = 10;
    while (x --> 0) // x goes to 0
    {
        printf("%d ", x);
    }
}
Run Code Online (Sandbox Code Playgroud)

我假设这是C,因为它也适用于GCC.标准中定义了哪里,它来自何处?

c++ code-formatting standards-compliance operators

8590
推荐指数
27
解决办法
75万
查看次数

浮点除零的行为

考虑

#include <iostream>
int main()
{
    double a = 1.0 / 0;
    double b = -1.0 / 0;
    double c = 0.0 / 0;
    std::cout << a << b << c; // to stop compilers from optimising out the code.    
}
Run Code Online (Sandbox Code Playgroud)

我一直认为这a将是+ Inf,b将是-Inf,并且c将是NaN.但我也听到传言说严格来说浮点除零的行为是未定义的,因此上面的代码不能被认为是可移植的C++.(理论上,这会消除我的百万行加上代码堆栈的完整性.糟糕.)

谁是对的?

注意我对实现定义感到满意,但我在谈论吃猫,在这里恶魔打喷嚏的未定义行为.

c++ floating-point divide-by-zero undefined-behavior language-lawyer

48
推荐指数
5
解决办法
1万
查看次数

main()在运行时异常返回什么?

int main()当程序遇到运行时异常(例如,分段错误)时,C 函数返回什么?

在寻找答案时,我遇到了很多关于应该返回什么的main()讨论/帖子,就像这样

c program-entry-point exception

3
推荐指数
1
解决办法
159
查看次数

整数除以零,但系统显示执行退出代码为 0

以下代码片段会导致代码过早退出。我的问题是为什么我的系统仍然显示Program finished with exit code 0.

#include <stdio.h>

int main(void) {
   int divisor = 0;
   int dividend = 0;
   int quotient = 0;

   printf("BEGIN\n");
   quotient = dividend / divisor;
   printf("END\n"); // This statement does not execute
   
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

-2
推荐指数
1
解决办法
310
查看次数

为什么布尔表达式中元素的顺序会改变结果?

如果x为0,则打印0.如果y为0,则会出错.

为什么是这样?我唯一能想到的是布尔表达式编译的顺序很重要.如果x为0,则得到(false)&&(错误值),其中false在左侧,如果y为0,则得到(错误值)&&(false).为什么会影响打印的内容?

int main(void) {
  int x = 1;
  int y = 0;
  int a = (x/y > 0)&&(y/x > 0);
  printf("%d\n", a);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c parsing compilation

-3
推荐指数
1
解决办法
66
查看次数