我遇到了这段代码:
int __min(int a, int b) {
return ((a)-(((a)-(b))&((b)-(a))>>31));
}
Run Code Online (Sandbox Code Playgroud)
我可以想象它与2s补码有关,它只适用于有符号的32位整数,但之后我就输了.
我发现了这个问题,但我不认为这些功能是相关的,还是我错了?
所以我有两个问题:
(a<b)?a:b无法正常工作的情况,这个功能是否会过于复杂?编辑:该函数是为GPU编写的,所以我认为@Banex可能是正确的写这个目的是为了避免分支.
我正在尝试将描述时间间隔的字符串转换为相应的秒数.
经过一些实验,我发现我可以date像这样使用:
soon=$(date -d '5 minutes 10 seconds' +%s); now=$(date +%s)
echo $(( $soon-$now ))
Run Code Online (Sandbox Code Playgroud)
但我认为应该有一种更简单的方法将"5分10秒"等字符串转换为相应的秒数,在本例中为310. 有没有办法在一个命令中执行此操作?
注意:虽然可移植性很有用,但这不是我的首要任务.