Tag: 语法

什么构成“有效”C标识符?

在@Zaibis建议(和我自己的答案 有关宏名称的有效字符是什么? ,以及++(和其他unicode字符)在g ++不允许的标识符中 ))… clang允许很多“疯狂”的角色..虽然我一直在努力找到很多押韵或理由 – 至于为什么有些人被允许(🔴ϟツ⌘☁½),而其他人不是(▶︎∀★©)。 例如,以下所有编译A-OK( clang-700.1.76 ) #define 💩 ?: // OK (Pile of poo) #define ■ @end // OK (HALFWIDTH BLACK SQUARE) #define 🅺 @interface // OK (NEGATIVE SQUARED LATIN CAPITAL LETTER K) #define P @protocol // OK (FULLWIDTH LATIN CAPITAL LETTER P) 但以下都导致相同的编译器错误… Macro name must be an identifier. […]

奇怪的C语法是什么?

可能重复: 定义中函数标题后的C变量声明 这个C语法的用处是什么? 我试图理解一些C代码,并遇到了这个函数的头部和第一个支撑之间声明变量的地方。 知道这些变量是什么? 他们是本地的还是全球的? 作者打算在这做什么? void someFunction (m_ptr, n_ptr, params, err) integer *m_ptr; /* pointer to number of points to fit */ integer *n_ptr; /* pointer to number of parameters */ doublereal *params; /* vector of parameters */ doublereal *err; /* vector of error from data */ { //some variables declared here int […]

C参数数组声明符

在C99中有变长数组,参数数组声明符中可以有静态限定符(和类型限定符): void f(int i, int *a); void f(int i, int a[]); void f(int i, int a[i]); void f(int i, int a[*]); // Only allowed in function prototypes. void f(int i, int a[static i]); 由于数组函数参数只是衰减到指针,以前的声明之间是否有任何实际差异,还是风格问题? 什么时候应该使用它们? 特别是, static限定符意味着什么? 该标准没有清楚地说明每种语法的原因。

“for(;;)”是什么意思?

在C / C ++中,以下是什么意思? for(;;){ … }

**在**中意味着什么

当一个物体在开头有2个星号时,它意味着什么? **variable

C中两个变量(如+++ b)之间的3个加符号

#include int main() { int a=8,b=9,c; c=a+++b; printf(“%d%d%d\n”,a,b,c); return 0; } 上面的程序输出a=9 b=9和c=17 。 在a+++b为什么编译器需要a++然后加上b 。 为什么不采用a +和++b ? 这个a+++b是否有特定的名称。 请帮我理解。

切换案例奇怪的范围

回顾一些第三方C代码我遇到了类似的事情: switch (state) { case 0: if (c==’A’) { // open brace // code… break; // brace not closed! case 1: // code… break; } // close brace! case 2: // code… break; } 在我正在审查的代码中,这似乎只是一个错字,但我很惊讶它编译出错误。 为什么这个有效的C? 与在预期位置关闭支撑相比,对此代码执行的影响是什么? 有什么情况可以使用吗? 编辑:在示例中,我查看了所有中断(如上所述) – 但如果在0或1的情况下中断,则答案还可以包括行为。

如何使用printf格式化unsigned long long int?

#include int main() { unsigned long long int num = 285212672; //FYI: fits in 29 bits int normalInt = 5; printf(“My number is %d bytes wide and its value is %ul. A normal number is %d.\n”, sizeof(num), num, normalInt); return 0; } 输出: My number is 8 bytes wide and its value is 285212672l. A […]

从零开始的数字有什么特别之处?

这有点愚蠢的问题,但对我来说很有意思) 这就是我在visual studio 2013中获得的 int i = 07; // i == 7 int i = 16; // i == 16 int i = 00016; // i == 14, why? int i = 05016; // i == 2574, wow ) int i = 08; // compile error, compiler expects octal number… 如果number从零开始并且包含8,那就是编译错误。 这是正常的吗? 如果00016 == 14,那么编译器在启动零时究竟做了什么? […]

当C / C ++中的数字常量以0为前缀时,这意味着什么?

好的…所以我有一个愚蠢的想法,并尝试将值0123放入一个int,只是好奇看看会发生什么,我假设当我打印的值我得到123,但我得到83 …有什么想法吗? 在编译器/内存中发生什么使得该值变为83? 我在C ++和C中使用GCC编译器尝试了这个,并尝试使用浮点数产生相同的结果。