c++ - 关于 C++ 中的默认参数
问题描述
我正在寻求帮助以了解: - 在这个程序中:
#include <iostream>
int main()
{
int j = 0;
int k = 1;
int m = -1;
int n = 1;
int p = ((j * 300) - (4 * n) - (7 * m));
if (int l = ((j * 300) - (4 * n) - (7 * m)) > 0) {
std::cout << "l is egual: " << l - 1 << std::endl;
}
else {
std::cout << "l is negative: " << l << std::endl;
}
if (p > 0) {
std::cout << "p is egual: " << p - 1 << std::endl;
}
else {
std::cout << "p is negative: " << p << std::endl;
}
return 0;
}
我得到了输出: gcc circonfEn.cc -lstdc++ -o circonfEn ./circonfEn
l is egual: 0 p is egual: 2
为什么if中的指令不起作用?
解决方案
您的代码本质上意味着(以 的范围为模l
):
int l = ((j * 300) - (4 * n) - (7 * m)) > 0;
if (l != 0) {
std::cout << "l is egual: " << l - 1 << std::endl;
}
else {
std::cout << "l is negative: " << l << std::endl;
}
由于>
返回 a bool
,因此 的值l
始终为0
或1
。
代码应改写为:
int l = (j * 300) - (4 * n) - (7 * m);
if (l > 0) {
std::cout << "l is egual: " << l - 1 << std::endl;
}
else {
std::cout << "l is negative: " << l << std::endl;
}
或者:
if (int l = (j * 300) - (4 * n) - (7 * m); l > 0) {
std::cout << "l is egual: " << l - 1 << std::endl;
}
else {
std::cout << "l is negative: " << l << std::endl;
}
推荐阅读
- c# - 如何使用 AdvancedCollectionView 源更新 UWP ListView 中的项目
- git - .git/refs/heads 没有得到所有分支
- reactjs - 需要帮助解决从 Firebase 数据库中获取单个文档作为详细页面的问题
- python - Python在类中传递值并使用.self定义
- dialogflow-es - 为帐户名称的多空格分隔用户短语设置哪种 Dialogflow 实体类型
- django - 是否存在干扰“授权:承载 {token}”数据的 AWS 入站策略?
- python - 如何在 Streamlit 上更改面积图的标签?
- java - Logback Spring - 在运行时使用 jar 外部的外部 yaml 文件更改日志级别
- c# - 错误:输入字符串的格式不正确
- spring-boot - 关于 ResponseStatusException 返回错误对象中的空消息字段