C 使用| | vs.amp;时do中的条件&;
您希望在输入低于1或输入大于50时循环C 使用| | vs.amp;时do中的条件&;,c,loops,conditional-statements,nested-loops,do-while,C,Loops,Conditional Statements,Nested Loops,Do While,您希望在输入低于1或输入大于50时循环 如果使用and,条件将永远不会为真,因为输入不能小于1且大于50。因为|和&&的含义不同 | |是逻辑OR运算符,因此它在那里非常有意义,因为只有当输入是而不是符合您的规范时,才再次运行循环。错误的输入是userInput为50的输入。这两种情况下都是错误的,但只有一种情况就足以使其出错,因此使用OR。vaue不能同时为50,因此AND运算符(&&)总是返回false 如果要使用&&表示“仅当数字不在1和50之间时才再次运行循环”,则必须将比较更改为:
如果使用and,条件将永远不会为真,因为输入不能小于1且大于50。因为
|
和&&
的含义不同
| |
是逻辑OR运算符,因此它在那里非常有意义,因为只有当输入是而不是符合您的规范时,才再次运行循环。错误的输入是userInput为50的输入。这两种情况下都是错误的,但只有一种情况就足以使其出错,因此使用OR。vaue不能同时为50,因此AND运算符(&&
)总是返回false
如果要使用&&
表示“仅当数字不在1和50之间时才再次运行循环”,则必须将比较更改为:
while(!(userInput>=1&&userInput谢谢Matthieu!哦,我看到它不能同时小于和大于,因此它不会听我需要的是保持在1和50之间。因此,使用| |循环将允许程序仅在设定范围之间运行,但&&将允许所有数字忽略范围。可能是我的英语,whi即使当我写“介于1和50之间”时,ch也不合适,我只是假设&会起作用。是的,但是循环是在它不在1和50之间的时候。这是用OR运算符解决的。布尔代数。注意,
是逻辑not,但也有!
表示按位not。~
main() { int x, y, userInput; do { { printf("Input a number: \n"); scanf("%i", &userInput); } } while (userInput < 1 || userInput > 50);
for (x = 1; x <= userInput; x++) { for (y = 1; y <= x; y++) { printf("*"); } printf("\n"); } PAUSE; }