【问题标题】:strange backslash operator in C assignmentC赋值中奇怪的反斜杠运算符
【发布时间】:2023-04-03 15:34:02
【问题描述】:

在下面的代码中,0x0\1 是什么意思?我在嵌入式 C 代码中找到了这个:

uint16 size;
...
size += (size & 0x0\1);

它是德州仪器发布代码的一部分。它在 IAR ARM IDE 中编译。

【问题讨论】:

  • 我无法编译有问题的代码。
  • 这是 TI 发布代码的一部分。它在 IAR ARM IDE 中编译。
  • 可能只是八进制 1。但不要问我为什么。
  • 我也无法编译它(在 gcc 或 clang 下)。 gcc 抱怨(并不奇怪)“程序中的流浪'\'”。这不是可移植的代码。那里的反斜杠在可移植的 C 中没有任何意义。不管它是什么意思,我们不能告诉你;您可能需要询问 TI。
  • 我建议使用printf("%d\n", 0x0\1); 来找出它的含义(很可能,它相当于1,但它是非标准的,所以一切皆有可能)。然后编辑代码以替换它,或者将来忽略它。

标签: c embedded texas-instruments


【解决方案1】:

不可移植、依赖于实现、不符合标准的代码。 任何人都可以猜测原作者的意图,但“可能”是指size += size & 0x1。即:如果size为奇数(即最低有效位为1),则将size加1。

【讨论】:

    猜你喜欢
    • 2012-01-22
    • 1970-01-01
    • 2021-12-14
    • 2010-12-05
    • 2016-09-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多