C语言 这段代码谁能解读一下
inta;a>0?((a&1)?((a-1)/2):((a-2)/2)):-1;具体什么意思其实我的主要目的是问a>0?((a&1)?((a-1)/2):((a-2)/2...
int a;
a> 0 ? ((a& 1) ? ((a- 1) / 2) : ((a- 2) / 2)) : -1;
具体什么意思
其实我的主要目的是问a> 0 ? ((a& 1) ? ((a- 1) / 2) : ((a- 2) / 2)) : -1;与a> 0 ? ((a& 1) ? ((a- 1) / 2) : a) : -1;有什么区别,不好意思,辛苦BTzjzxxx了,根据我测试的结果,结果是没有什么区别的,搞不懂源码的作者为什么要这么写,((a- 2) / 2)的值根本就没有发挥作用 展开
a> 0 ? ((a& 1) ? ((a- 1) / 2) : ((a- 2) / 2)) : -1;
具体什么意思
其实我的主要目的是问a> 0 ? ((a& 1) ? ((a- 1) / 2) : ((a- 2) / 2)) : -1;与a> 0 ? ((a& 1) ? ((a- 1) / 2) : a) : -1;有什么区别,不好意思,辛苦BTzjzxxx了,根据我测试的结果,结果是没有什么区别的,搞不懂源码的作者为什么要这么写,((a- 2) / 2)的值根本就没有发挥作用 展开
展开全部
三目运算符,A?B:C
A为一个bool变量或返回一个bool值
若A为真,则执行B
若A为假,则执行C
三目运算符和if语句等价,这里是两层的嵌套,改成if就是:
if(a>0) {
if(a&1)
(a-1)/2;
else
(a-2)/2;
} else {
-1;
}
你这里应该没有写全,应该有一个左关联参数去接受这个值,并且BC的返回值必须相同,这段代码用通俗的话说就是:
如果a>0:再看如果是奇数则a-1除以2赋给左关联参数,若a是偶数,则将a-2除以2的值赋给左关联参数
如果a≤0,则把-1赋给左关联参数
不知道你的源码具体是怎么写的,是
a=a> 0 ? ((a& 1) ? ((a- 1) / 2) : ((a- 2) / 2)) : -1;
还是另外的int b
b=a> 0 ? ((a& 1) ? ((a- 1) / 2) : ((a- 2) / 2)) : -1;?
不可能没有效果,a=6、8、10时式子返回的值分别是2、3、4,如果没有效果,除非是程序中a始终是奇数
A为一个bool变量或返回一个bool值
若A为真,则执行B
若A为假,则执行C
三目运算符和if语句等价,这里是两层的嵌套,改成if就是:
if(a>0) {
if(a&1)
(a-1)/2;
else
(a-2)/2;
} else {
-1;
}
你这里应该没有写全,应该有一个左关联参数去接受这个值,并且BC的返回值必须相同,这段代码用通俗的话说就是:
如果a>0:再看如果是奇数则a-1除以2赋给左关联参数,若a是偶数,则将a-2除以2的值赋给左关联参数
如果a≤0,则把-1赋给左关联参数
不知道你的源码具体是怎么写的,是
a=a> 0 ? ((a& 1) ? ((a- 1) / 2) : ((a- 2) / 2)) : -1;
还是另外的int b
b=a> 0 ? ((a& 1) ? ((a- 1) / 2) : ((a- 2) / 2)) : -1;?
不可能没有效果,a=6、8、10时式子返回的值分别是2、3、4,如果没有效果,除非是程序中a始终是奇数
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询