我在c中使用切换大小写找到了最大的数字。在这里,如果我从案例0开始开关,程序将完美执行。
IWebElement iscop = driver.FindElement(By.XPath("//*[@id='idRequirement']/div/span[1]/p"));//find element
string text = driver.FindElement(By.XPath("//*[@id='idRequirement']/div/span[1]/p")).Text;//get element text
Actions actions = new Actions(driver);
int length = text.Length;
actions.DragAndDropToOffset(iscop, 75, 0);
actions.ClickAndHold(iscop);
actions.MoveByOffset(75, 0);
actions.Release(iscop);
actions.Build().Perform();
但是当我使用情况1而不是情况2时,程序将接受输入,但不显示任何结果。是什么原因?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
switch(a>b)
{
case 0:
printf("%d is maximum",b);
break;
case 1:
printf("%d is maximum",a);
break;
}
return 0;
答案 0 :(得分:4)
比较a>b
是一个表达式,其结果将为 true 或 false 。在表示(或测试)C
中的这些“布尔”值时, false 等效于 零 和 true < / em>等同于 一个 。
因此,第一个代码块中的switch
语句将按您期望的那样运行。但是,在第二个代码段中,被测试的表达式可能 从不 的值为2
,因此,如果a
不大于比b
,什么都不会打印! (但是,如果a
大于b
,则case 1:
块将运行。)
PS:如果switch
后面括号中的表达式的求值与case
块内给定switch (...) {}
的 any 不匹配,那么您的代码将默默地忽略该块…… ,除非您添加了default:
块(通常在末尾添加,但是它可以放在任何{{1} } 可以)。也许您可以尝试一下以自己查看。
答案 1 :(得分:1)
对于一个switch语句中的启动器,可能没有两个相同的大小写标签。所以这段代码不应该编译
switch(a>b)
{
case 1:
printf("%d is maximum",b);
break;
case 1:
printf("%d is maximum",a);
break;
}
根据C标准(6.8.4.2 switch语句)
3每个case标签的表达式应为整数常量 表达式,并且没有两个大小写常数表达式在同一位置 转换后,switch语句的值应相同。 ...
在C中,逻辑表达式的值(例如a > b
)可以是整数0(false)或整数1(true)。所以这个switch语句中的大小写标签是正确的
switch(a>b)
{
case 0:
printf("%d is maximum",b);
break;
case 1:
printf("%d is maximum",a);
break;
}