在 C++ 中使用布尔值时出错
error on using Boolean in c++
给定一个开始时间和结束时间的数组,根据结束时间对它们进行排序。
这是我的函数描述的样子
// sort() - sorts an array of floats returning sorted indices
// On return, indx[] is an array of indices such that data[indx[0]],
// data[indx[1]], ..., data[indx[len-1]] is data[] in ascending order.
// Parameters
// data[] - float array of data to be ordered
// indx[] - int array, same length as data[], to hold indices
// len - int specifying the length of data[] and indx[]
这是代码
#include<iostream>
#include<string>
#include sched.h
void sort(float data[], int indx[], int len);
int main() {
int indx[NUM_EVENTS];
int scheduledEvents[NUM_EVENTS];
int numSched;
// Sort by event ending times
sort(endTime, indx, NUM_EVENTS);
// Call greedy scheduling algorithm
numSched = sched(startTime, endTime, indx, scheduledEvents, NUM_EVENTS);
// Display scheduled events
for (int i = 0; i < numSched; i++)
printEvent(startTime[scheduledEvents[i]], endTime[scheduledEvents[i]],
description[scheduledEvents[i]]);
return 0;
}
我的排序算法诱导 for 循环来检查输出 看来
void sort(float data[], int indx[], int len){
for (int i = 0; i < 10; i++){
indx[i];
}
float smallestIndex;
bool flag = 1;
while (flag == 1){
flag == 2;
for (int i = 0; i < len-1; i++){
if (data[indx[i]] > data[indx[i + 1]]){
smallestIndex = indx[i + 1];
indx[i + 1] = indx[i];`
indx[i] = smallestIndex;
flag == 1;
}
}
}
for (int i = 0; i < 10;i++){
cout << data[indx[i]] << endl;
}
做我得到一个看起来像的错误
>警告 C4806:"==":不安全的操作:没有"bool"类型的值 提升为类型"int"可以等于给定的常量 1>sched.obj : 错误 LNK2019: 未解析的外部符号"void __cdecl printEvent(float,float,class std::basic_string,class std::分配器>)" (?printEvent@@YAXMMV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 在函数_main中引用
bool 是一种通常接受 true 和 false 的类型。在内部,它作为整数处理。这就是为什么您可以为其分配数值的原因。但是,如果要执行此操作,请使用 int。
另请注意,您的线路包含:
flag == 2;
没有效果。您将标志与 2 进行比较,这种比较的结果(真或假)只是悬而未决。这不是错误,但整个表达式不执行任何操作。
变量flag
只保存两个值中的一个,所以这将起作用,保留你的其他逻辑(可能不是最有效的),"原样"。
bool flag = true;
while (flag == true){
flag = false; // Tentative "stop"
for (int i = 0; i < len-1; i++){
if (data[indx[i]] > data[indx[i + 1]]){
smallestIndex = indx[i + 1];
indx[i + 1] = indx[i];`
indx[i] = smallestIndex;
flag = true; // Keep going.
}
}
}
布尔值
只能是真或假,它是二进制的。如果您不想使用 bool,您可以将 1 或 0 分配给 int 以获得与使用布尔值相同的结果。
此外,您使用 == 来检查等价性。单个 = 用于分配一个看起来你想做的数字,
flag == 2;
它应该被声明和 int(或类似的东西)
int flag = 0;
flag = 2
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 变量定义到C++布尔值转换
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 重载更少,则运算符返回相反的布尔值
- 将此布尔值传递给此函数的最有效方法是什么?
- 如何设置 c++ 类的布尔值?
- 使用 MAKEWORD / MAKEWPARAM 使用布尔值而不是布尔值
- 将 10 个线程与原子布尔值同步
- 创建类似于布尔值的变量类型
- 布尔值向量的基于范围 for 循环
- 零点和布尔值之间的比较
- 简化对两个布尔值的 4 个 if/else 检查
- 无法创建带有布尔值和矢量的地图
- 对于完成布尔值设置为 true 后未停止的循环
- fstream / ifstream / ofstream 对象如何转换为布尔值
- C++:将值赋值给原始数据类型(例如布尔值)是原子操作吗?
- 为什么布尔值不能比作最后一点?
- 从 lambda 表达式返回布尔值时出错
- 关闭文件流时出错,其存在取决于与 C++ 中的 .close() 语句相同的布尔值
- 在 C++ 中使用布尔值时出错