我正在 Visual Studio Community 中使用 C++20 编写跨平台代码,但我陷入了以下代码的输出:
#define WINDOWS (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__))
#define UNIX (defined(__unix__) || defined(__unix))
constexpr bool is_unix1()
{
#ifdef UNIX
return true;
#else
return false;
#endif
}
constexpr bool is_unix2()
{
#ifdef defined(UNIX)
return true;
#else
return false;
#endif
}
int main()
{
cout << std::boolalpha << is_unix1() << " " << is_unix2() << endl;
}
Run Code Online (Sandbox Code Playgroud)
当我在 Windows 中从 VS Community 内部运行此代码时,我得到以下输出:
true false
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么is_unix1()评估为falsewhileis_unix2()评估为吗true? …
int x = 0;
printf("Geben Sie bitte ihr Alter ein \n");
scanf_s("%i",&x);
if (x <= 15)
{
printf("Sie duerfen keinen Alkohol trinken! \n");
}
else
{
printf("Sie duerfen Bier trinken \n");
if (x >= 18)
{
printf("Sie duerfen Alkohol jeglicher Art trinken! \n");
}
}
Run Code Online (Sandbox Code Playgroud)
条件:
问题是,当您说您已年满18岁时,它显示了第二部分
printf("Sie duerfen Bier trinken \n");
Run Code Online (Sandbox Code Playgroud)
同样,我真的不知道该如何解决。
我得到了这些结果。我究竟做错了什么?
const char *c = "\0";
cout << (c == NULL); // false
cout << (c == nullptr); //false
Run Code Online (Sandbox Code Playgroud) #include<iostream>
using namespace std;
int main()
{
int a = 5;
int c;
c = a+ a++;
cout<<"c = a + a++ : "<<c<<" = "<<a<<" + "<<a++;
}
Run Code Online (Sandbox Code Playgroud)
我的代码是如何输出的: c = a + a++ : 11 = 7 + 6 为什么我的 a 会自动添加 2?