我的问题是我不知道编译器如何正确地运行不同的if语句,以及为什么在这种情况下他会跳过某些语句。
我尝试检查从头到尾的条件是对还是错,从而找到程序的正确输出。但是为什么程序在这里不输出84:
if (a > c) cout << 84;
else cout << 48
完整程序:
int main()
{
constexpr int a{8};
constexpr int b{4};
constexpr int c{1};
if (a < b < c)
if (c > b > a)
if (a > c) cout << 84;
else cout << 48;
else
if (b < c) cout << 14;
else cout << 41;
else
if (b < a < c)
if (a < c) cout << 81;
else cout << 18;
else
if (b < c) cout << 17;
else cout << 71;
return 0;
}
程序仅输出41。为什么?
答案 0 :(得分:0)
这句话是胡说八道:
if (a < b < c)
它将被评估为:
if (a < bool(b < c))
lt / gt / eq / ne / le / ge运算符是二进制的-即它们需要两个参数。您应该这样做:
if (a < b && b < c)
答案 1 :(得分:0)
首先,如果您是新手。不要跳过括号。现在让我们逐步进行 在您的第一个if-else中。在这里,您的a = 8,b = 4,c = 1。这就是您的代码进行的方式
services.AddIdentity<ApplicationUser, ApplicationRole>(
config => config.SignIn.RequireConfirmedEmail = false)
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddClaimsPrincipalFactory<MyUserClaimsPrincipalFactory>();
}