C++;if语句解释混乱 我是C++新手,有时我很难理解复杂的if语句,有人能帮我解释下面的代码吗?提前谢谢。 鉴于: int-vis[25]、g[25][25]、Ty[25][25]; 对于(int i=1;i

C++;if语句解释混乱 我是C++新手,有时我很难理解复杂的if语句,有人能帮我解释下面的代码吗?提前谢谢。 鉴于: int-vis[25]、g[25][25]、Ty[25][25]; 对于(int i=1;i,c++,if-statement,operator-keyword,boolean-operations,C++,If Statement,Operator Keyword,Boolean Operations,Vis[]是一个数组,仅初始化,目前没有任何赋值。 那是什么呢!我的意思是? 它的意思是vis[i]=0或vis[i]==1或其他什么? int只有在0时才是false。这意味着对于任何其他数字,字符串都是true A会将其否定 因此,如果检查: 位置i上的数组vis必须为0 !vis[i]==!(vis[i]!=0)==vis[i]==0 x,i上的g的数组值必须为一 位置f,i上的Ty数组不能等于n 声明3个数组。“vis”是大小为25的一维数组,“g”是大小为25x25的二维数组,与“T

Vis[]是一个数组,仅初始化,目前没有任何赋值。 那是什么呢!我的意思是? 它的意思是vis[i]=0或vis[i]==1或其他什么?

  • int
    只有在
    0
    时才是
    false
    。这意味着对于任何其他数字,字符串都是true
  • A
    会将其否定
因此,如果检查:

  • 位置
    i
    上的数组
    vis
    必须为
    0

    !vis[i]==!(vis[i]!=0)==vis[i]==0

  • x
    i
    上的
    g
    的数组值必须为一

  • 位置
    f
    i
    上的
    Ty
    数组不能等于
    n
  • 声明3个数组。“vis”是大小为25的一维数组,“g”是大小为25x25的二维数组,与“Ty”相同

    在C++中,如果值为0,则对布尔表达式求值为“false”,而对于所有其他值则为“true”。因此,在if语句中,当vis[i]==0时,第一个表达式“!vis[i]”将计算为true

    当“g”中索引[x][i]处的值等于1时,第二个表达式的计算结果为真

    当'Ty'中索引[f][i]处的值不等于某个变量'n'时,第三条语句的计算结果将为true,该变量可能在程序中的某个地方定义为'x'


    *注意-正如drescherjm在一篇评论中所指出的,for循环应该只增加到24,因为数组的大小在任意方向上都是25,所以访问范围在0-24(包括0-24)之外的元素你的C++教科书在主题上有什么要说的?这是任何体面教科书所涵盖的基本语言结构。请掌握并学习该语言的基础知识。从长远来看,这比回答这个具体问题更有帮助。
    int-vis[25]
    then
    for(int i=1;i<30;i++)
    then
    vis[i]
    是一个bug<对于25个元素的数组,code>i
    必须介于0和24之间。实际上,1表示-
    vis[i]==0
    ,并且不能为空,因为
    vis[i]
    不是pointer@Slava哦,对了。它不是
    null
    ,而是
    0
    。我会更正它。1表示
    vis[I]
    必须等于0,而不是相反around@Slava绝对正确。。。我不知道我在想什么。。。
    int vis[25], g[25][25], Ty[25][25];
    
    for (int i = 1; i < 30; i++)
    { 
    if(!vis[i] && g[x][i] == 1 && Ty[f][i] != n) {...}
    }
    
    int vis[25], g[25][25], Ty[25][25];
    
        if(!vis[i] && g[x][i] == 1 && Ty[f][i] != n) {...}