2D数组-将三个元素与if语句进行比较

2D array - compare three elements with if-statement

本文关键字:if 元素 语句 比较 三个 数组 2D      更新时间:2023-10-16

我不明白为什么foobar这个词不会被打印出来。

#include <iostream>
using namespace std;
int main(){
int a = 1;
int b = 1;
int c = 1;
if(a==b==c)
cout << "this line will be printed out ...n";
char ac = 'z';
char bc = 'z';
char cc = 'z';
if(a==b==c)
cout << "this line will be printed out ...n";
char array[3][3]={ {'a','a','a'},{'b','b','b'},{'c','c','c'} };
if(array[0][0] == array[0][1] == array[0][2]) {
// these lines will not be printed out
cout << array[0][0] << array[0][1] << array[0][2] << "n";
cout << "foobarn";
}
// aaa
cout << array[0][0] << array[0][1] << array[0][2] << "n";
}

我试过这样的方法:如果(*(array[0]+0)==*(array[0]++1)==*array[0]+2)依此类推但这也不起作用。

谢谢。

if(a==b==c)

这并不像你想象的那样。a == b将返回truefalse,然后将其与c进行比较。如果你想比较多个项目,你需要这样做:

if (a == b && b == c)

你不能做

if(array[0][0] == array[0][1] == array[0][2])

你必须做这个

if(array[0][0] == array[0][1] && array[0][1] == array[0][2])

我知道第一个看起来很直观,但它并不像你想象的那样。它首先进行

array[0][0] == array[0][1]

它将返回true,然后它将比较数组[0][2]==1(true),这将是false。

在第一个if语句中

if(a==b==c)
cout << "this line will be printed out ...n";

由于以下原因执行输出。相等运算符从左到右分组。比较的结果a == b是布尔值true。然后将该值与c进行比较。它被转换为int值1。由于c也等于1,则执行具有cout的语句。

在secons if语句中

if(array[0][0] == array[0][1] == array[0][2]) 

首先将数组[0][0]与数组[0][1]进行比较。由于它们相等,则比较CCD_ 7的结果为布尔真。然后将此布尔值与数组[0][2]进行比较。再次,布尔值被转换为int值1,并与"a"(也被提升为int)进行比较。由于1不等于"a",则整个条件为false。

你的意思是以下

if( array[0][0] == array[0][1] && array[0][1] == array[0][2]) 

在这种情况下,条件的结果将等于true,因为数组[0][0]等于数组[0][1],而数组[0][1]等于数组[0][2]。

第一个if语句中的条件也应重写为

if(a==b && b==c)

那么它将不取决于c具有等于1的值。