小编Nox*_*bru的帖子

两个无符号的减法给出了签名

我有以下代码:

#include <cstdint>

template <typename T>
T test(T a, T b)
{
    float aabb = reinterpret_cast<float>(a - b);
}

int main(int argc, const char *argv[])
{
    std::uint8_t a8, b8;
    test(a8, b8);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道它reinterpret_cast<float>无法工作,并且它在编译时出错.我正在使用该错误,以便编译器告诉我类型a - b.

问题是,在这种情况下,它说的类型a - b是int当两者都是uint8_t (unsigned char).同样的事情发生在uint16_t.但不能与uint32_t它说a - b是unsigned int.

所以,我的问题是:这是预期的行为(unsigned char - unsigned char给出一个int),还是这种奇怪的编译器bug(用GCC和clang测试过)?

c++

11
推荐指数
1
解决办法
1142
查看次数

添加 vim 语法折叠标记

我通常用 C 编写代码,我的 .vimrc 中也有set foldmethod=syntax,它工作得很好,因为它折叠了大括号和注释以及所有内容。

但有时我需要折叠大块代码,以免它们妨碍我(例如一组相关函数),我通常使用set foldmethod=marker和 标记>>>和 来完成此操作<<<。

我一直在尝试添加一个新的同步区域,我最近得到的是:

syn region cFoldMarkers start='>>>' end='<<<' containedin=cComment transparent fold
Run Code Online (Sandbox Code Playgroud)

但这会造成混乱,因为它在某种程度上与评论相匹配。

有没有办法同时实现这两个目标?或者我应该放弃使用语法来执行此操作,而只为大括号、注释和我的自定义标记设置标记?

提前致谢

syntax vim folding

5
推荐指数
1
解决办法
891
查看次数

标签 统计

c++ ×1

folding ×1

syntax ×1

vim ×1