C#表达式结果。怎么了?

C#表达式结果。怎么了?,c#,.net-core,C#,.net Core,我试图计算一些项目要显示的页面数,我发现这个结果很有趣,也许你可以帮助我理解我在这里做错了什么 var totalItems = 11; var pageSize = 5; 案例A. var pages = (totalItems / pageSize) + (totalItems % pageSize) > 0 ? 1 : 0; var remainder = totalItems % pageSize; var extrapage = remainder > 0 ? 1 :

我试图计算一些项目要显示的页面数,我发现这个结果很有趣,也许你可以帮助我理解我在这里做错了什么

var totalItems = 11;
var pageSize = 5;
案例A.

var pages = (totalItems / pageSize) + (totalItems % pageSize) > 0 ? 1 : 0;
var remainder = totalItems % pageSize;
var extrapage = remainder > 0 ? 1 : 0;
var pages = (totalItems / pageSize) + extrapage;
案例B.

var pages = (totalItems / pageSize) + (totalItems % pageSize) > 0 ? 1 : 0;
var remainder = totalItems % pageSize;
var extrapage = remainder > 0 ? 1 : 0;
var pages = (totalItems / pageSize) + extrapage;
所以基本上,
外部页面
这里是
(totalItems%pageSize)>0?案例A中的1:0

案例A给出
页面==1
。为什么
3
与案例B不一样


案例B给出了
页面==3
,这是我案例的正确答案。

案例A返回1,因为系统按如下方式计算:

var pages = ( (totalItems / pageSize) + (totalItems % pageSize) > 0 ) ? 1 : 0;
它围绕整个左侧设置括号,括号总是大于零,因此返回1

设置括号

var pages = (totalItems / pageSize) + ( (totalItems % pageSize) > 0 ? 1 : 0 );

它只给你一页,因为页数的计算是错误的。 基本上在这里
var页面=(totalItems/pageSize)+(totalItems%pageSize)>0?1 : 0;
您正在执行一个
if
表达式,该表达式将返回
1
0

所有这些代码
(totalItems/pageSize)+(totalItems%pageSize)
都是代码中的if语句,而不仅仅是
(totalItems%pageSize)

因此,要修复它,您必须将其拆分为案例2,或者将第二个条件放在括号中,如下所示:

var pages = (totalItems / pageSize) + ((totalItems % pageSize) > 0 ? 1 : 0);

这是因为+运算符的阶数高于逻辑>运算符。因此,在cas A中,您需要询问(totalItems/pageSize)+(totalItems%pageSize)之和是否大于0。只要把正确的括号放在错误的括号位置。请参阅“评估的优先级和顺序”: