我如何评估?=(20 || 10)?

时间:2016-01-29 07:20:18

标签: c logical-operators

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">

<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">


<body ng-app="myapp" ng-controller="c">

  <ul id="sortable1" class="connectedSortable">
    <li class="ui-state-default">Item 1</li>
    <li class="ui-state-default">Item 2</li>
    <li class="ui-state-default">Item 3</li>
    <li class="ui-state-default">Item 4</li>
    <li class="ui-state-default">Item 5</li>
  </ul>
  <p id="msg"></p>



</body>

这使输出 False

请向我解释一下这个程序是如何运作的?

2 个答案:

答案 0 :(得分:2)

此行if(i==(20||10))始终评估为i==1Alk在评论中说明 - (20||10)评估为1,因此当您比较i == 1时这就是为什么你得到False作为输出。 C中的非零值表示为真。

了解Short-circuit evaluation

也许这就是你想要的:

int i=10;
if(i==20 || i == 10)
    printf("True");
else
    printf("False");

答案 1 :(得分:1)

查看if(i==(20||10))。由于内部括号,首先评估20||10,产生1。然后,将值i的变量101进行比较,得到0

在C中,0代表False,而所有非零值均代表True。因此条件变为False。因此,&#34;错误&#34;打印出来。