条件语句 `if ( ( i != '7' ) && ( j != '8' ) && ( k != '9' ) )` 会产生不稳定的结果

问题描述 投票:0回答:1
#include <unistd.h>
void    triplet(void);

int     main(void)
{
        triplet();
}

void    triplet(void)
{
        char    i, j, k;

        i = '0';
        j = '1';
        k = '2';
        while (i < j)
        {
                j = i + 1;
                k = j + 1;
                while (j < k)
                {
                        k = j + 1;
                        while (k <= '9')
                        {
                                write(1, &i, 1);
                                write(1, &j, 1);
                                write(1, &k, 1);
                                if ( ( i != '7' ) && ( j != '8' ) && ( k != '9' ) )
                                {
                                        write(1, ", ", 2);
                                }
                                k++;
                        }
                        j++;
                }
                i++;
        }
}

if
语句的目标是控制何时打印数字组合之间的逗号空格分隔符(
", "
)。我想在除最后一个(“789”)之外的每个组合之后打印分隔符。

以下条件语句无法按预期工作:

if ( ( i != '7' ) && ( j != '8' ) && ( k != '9' ) )

这个可以:

if ( !( i == '7' && j == '8' && k == '9' ) )

第一个条件有什么问题?

c if-statement while-loop logic
1个回答
0
投票

这个 if 语句

if ( !( i == '7' && j == '8' && k == '9' ) )

相当于

if ( !( i == '7') || !(j == '8' ) || !( k == '9' ) )

这又相当于

if ( i != '7' || j != '8' ||  k != '9' )

这不一样

if ( ( i != '7' ) && ( j != '8' ) && ( k != '9' ) )
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.