gpt4 book ai didi

C 循环中断子句

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:48 25 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但我无法理解它是如何工作的。

//Q8
//Variables
char String[100];
char Yes[] = "Y";
char No[] = "N";
//Coding
do {
printf("Would you like an ice cream? Y / N\n");
scanf("%s", String);
} while(strcmp(String,Yes) && strcmp(String,No));

现在只有其中一个返回 0,为什么即使是 AND 循环还是会中断?

最佳答案

这个

while(strcmp(String,Yes) && strcmp(String,No));

可以更清楚地写成:

while(strcmp(String,Yes) != 0 && strcmp(String,No) != 0);

这样写总是更好,因为 strcmp 不返回 bool 值,它返回负数、0 或正数,这取决于第一个字符串比较小于、等于或大于(因为比较字符串) 比第二个字符串。

没有 != 0 部分也可以工作,因为在 C 中零为假,非零为真,所以从句法的角度来看没有区别,条件是“while String is不是 Yes 并且 String 不是 No”。

关于C 循环中断子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50163050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com