问题标签 [c99]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 是否存在 sizeof(char) != 1 或至少 CHAR_BIT > 8 的机器?
是否有机器(或编译器),在哪里sizeof(char) != 1
?
C99 标准是否规定sizeof(char)
在标准合规性实施上必须恰好为 1?如果是的话,请给我章节号和引文。
更新:
如果我有一台机器(CPU),它不能寻址字节(最小读取为 4 个字节,对齐),但只有 4-s 字节(uint32_t
),这台机器的编译器可以定义 sizeof(char)
为 4 吗?sizeof(char)
将为 1,但 char 将有 32 位(CHAR_BIT
宏)
更新 2: 但 sizeof 结果不是字节!它是 CHAR 的大小。char 可以是 2 字节,或者(可能是)7 位?
更新3:
好的。所有机器都有sizeof(char) == 1
。但是什么机器有CHAR_BIT > 8
?
c - C89 与 c99 GCC 编译器
如果我使用 c89 和 c99 编译以下程序有区别吗?我得到相同的输出。两者真的有区别吗?
c - 为什么新C书不符合C99标准?
我看过的几乎每本(相对)关于 c 编程的新书似乎都不符合 C99 标准,或者他们在额外的章节中介绍了它。来自 Java 背景,C99 标准使迁移(嗯,仍在迁移 ^^)对我来说更容易,这可能也适用于其他语言。
似乎 C99 还没有接触到大多数 C 开发人员。但为什么?
c - 赋值评估的顺序(我发现我的第一个编译器错误了吗?)
这段代码有一个有趣的错误:
对于大多数编译器,上述代码导致将相应数组中所有结构的“值”字段设置为 1。但是,对于一个特定的编译器(我们称之为 xcc),struct_array1 中的结构未正确初始化。所有结构的“值”字段都设置为 0,这让我很惊讶。
以下代码片段在所有编译器上都按预期工作:
现在,我完全离开这里了吗,还是有问题的编译器“xcc”只是显示了一个错误?
我在第一个代码片段中找不到任何显示特定于实现的行为的东西;据我了解,后缀递增应该优先于分配,并且分配应该从右到左进行评估。第一个代码片段应该没有什么奇怪的,除了它有点不可读。
c++ - 经过多年的 C++,我在哪里可以找到学习 C 的快速参考?
我最后一次专业使用 C 是在 1997 IIRC 左右。从那以后,我使用了很多 C++。现在,我发现我需要再次使用一些 C。
我确信的一件事是,我不能仅仅放弃明显的 C++ 特性(例如类)并期望一切正常。有各种不太明显的语法变化。我只是不记得它们是什么。
是否有一个很好的参考来再次进行过渡,但返回到 C?如果它解释了 C99(以及更高版本?)中的变化,那就更好了。
c - 下一个 C 标准是否正在积极开发?
目前是否有一个小组致力于下一个 C 标准(下一个,我的意思是在 C99 之后)?如果是这样,可能会出现哪些功能?
c - 为什么在 C99 之前 C 没有布尔数据类型?
我意识到你可以只使用#define
一些整数,但为什么 C 在 C99 之前没有专用的布尔数据类型?
这在编程和逻辑中很常见,我不明白显式类型和符号的缺失。
c - 如何获得 C99 代码的字符准确标识符交叉引用?
我维护了几个大小适中的 C 程序,而且我经常使用完全准确的交叉引用信息。与“标签”或其他近似值不同,此类信息通常由了解 C 语言的完整范围规则并可以相应地提供准确信息的编译器生成。例如,下面是从 lcc
编译器获得的信息片段:
这告诉我函数eval
是在源文件scheme.nw
第 4101 行第 0 列中定义的,它还列出了所有使用的位置eval
。
我的问题:lcc
仅适用于 ANSI C,而且我的大部分项目正在迁移到 C99。 什么编译器或工具将为 C99 程序提供完全准确的交叉引用信息?
Linux 支持是必须的;自由软件会很好,但不是绝对必需的。
c - C,从单个输入行读取多个数字(scanf?)
我用 C 语言编写了一个应用程序,它需要两行输入。第一个输入告诉 int 数组有多大,第二个输入包含由空格分隔的值。例如,以下输入
应该创建一个包含{1,2,3,4,99}
最快的方法是什么?我的问题是读取多个数字而不遍历整个字符串检查它是空格还是数字?
谢谢。
c++ - C/C99/C++/C++x/GNU C/GNU C99 中枚举的签名
类型是有enum
符号还是无符号?枚举的符号是否在以下之间有所不同:C/C99/ANSI C/C++/C++x/GNU C/GNU C99?
谢谢