Clang-Format 10在for循环中错误拆分右移运算符>>问题问询
clang-format-10右移运算符
>>被错误拆分的问题 这是clang-format-10的已知格式错误:当右移运算符>>出现在for循环的更新表达式或类似复合表达式中时,会被错误拆分为两个单独的>符号。
问题复现代码
原代码:
for (i = 0; i < j; ++i, k = k >> 1) { printf(); }
经clang-format-10格式化后结果:
for (i = 0; i<j; ++i, k = k > > 1) { printf(); }
补充测试案例:
原片段:
(i<j;k=k>>1);
格式化后错误输出:
(i<j; k = k> > 1);
问题说明
该错误源于clang-format-10对复合表达式中位运算符的处理逻辑缺陷,在clang-format 11及更高版本中,此问题已被官方修复。
临时规避方案(针对无法升级版本的场景)
- 手动在右移运算符
>>前后添加空格,避免被错误拆分 - 将涉及右移运算的表达式提取为单独语句,移出for循环的更新部分
内容的提问来源于stack exchange,提问作者David Wong
相关产品推荐
相关产品推荐

