相关疑难解决方法(0)

gcc和turbo C的输出差异

为什么会出现在当代码使用两个编译器编译产生的输出的差值gccturbo c.

#include <stdio.h>

int main()
{    
    char *p = "I am a string";
    char *q = "I am a string";

    if(p==q)
    {
        printf("Optimized");
    }
    else{
        printf("Change your compiler");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到"Optimized"gcc"Change your compiler"turbo c.为什么?

c c++ compiler-construction string optimization

14
推荐指数
4
解决办法
4327
查看次数

Switch中不正确的多个案例不会生成编译器错误

我知道这段代码不能用作"预期".只是快速查看此代码,我们认为返回值应为1,但在执行时它返回3.

// incorrect
variable = 1;
switch (variable)
{
  case 1, 2:
    return 1;
  case 3, 4:
    return 2;
  default:
    return 3;
}
Run Code Online (Sandbox Code Playgroud)

并且有一些正确的选项可以做到这一点:

// correct 1
variable = 1;
switch (variable)
{
  case 1: case 2:
    return 1;
  case 3: case 4:
    return 2;
  default:
    return 3;
}
Run Code Online (Sandbox Code Playgroud)

要么

// correct 2
switch (variable)
{
  case 1:
  case 2:
    return 1;
  case 3:
  case 4:
    return 2;
  default:
    return 3;
}
Run Code Online (Sandbox Code Playgroud)

在Switch中的多个案例中部分回答了这个问题:

我想知道为什么不正确的表单编译没有错误甚至警告(至少在Borland C++编译器中).

编译器在该代码中理解什么?

c++

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

用于检查两个值的Case命令

请看这个代码:

char o,t; cin >> o >> t;
switch (o,t)
{
  case 's','g': cout << "Finish"; break;
  default: cout << "Nothing";
}
Run Code Online (Sandbox Code Playgroud)

你可以看到switch设置为两个值,但是如果命令我不能同时检查它们.我该怎么办?有什么办法吗?

c++ switch-statement

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