Tag: 常数

压缩结构中的变量可以primefaces读取吗?

我正在为Cortex M0(ARM)CPU编写代码,32位读/写是primefaces的。 现在我想知道我何时读/写8位/ 16位变量,它们是否也保证是primefaces的? 我的直觉是肯定的,因为它们在内部与32位部分对齐,所以CPU不可能需要两个单独的指令来读/写它们。 但是我也碰巧在打包结构中存储了很多变量来节省内存,并且可能变量没有在32位边界上对齐,所以16位值的每一半都可能在不同的部分。 因此,当我使用压缩结构时,我失去primefaces操作是真的吗?

用于长long常量的后缀是什么

如果我想在C代码中使用类似下面的内容: if(num < 0x100000000LL) 我希望比较发生在一个很长的常量,但后缀LL在MSVC6.0中不起作用,但它适用于MS Visual Studio 2005。 如何让它在MSVC 6.0中运行? -Ajit

在C中为const char *分配一个define常量

我不完全确定哪个是将常量赋给const char *的正确方法。 两种方式都可以吗? #define MSG1 “My Message #1” #define MSG2 “My Message #2” #define MSG3 “My Message #3” const char *opt1 = NULL; const char opt2[20]; switch(n){ case 1: opt1 = MSG1; // or should it be: strcpy(opt2, MSG1); break; case 2: opt1 = MSG2; // or should it be: strcpy(opt2, MSG2); break; case […]

屏蔽是否有效阻止侧通道攻击?

我正在使用一些bigint公钥加密代码。 使用按位屏蔽以确保访问的计算时序和存储器地址与数据值无关是否安全? 这种技术是否容易受到基于指令时序,功率,RF发射或其他我不知道的事情的旁道攻击? (作为参考,我知道RSA盲法,EC Montgomery梯形图,缓存刷新等技术。) 简单代码示例(C / C ++): uint a = (…), b = (…); if (a < b) a += b; 现在翻译为使用恒定时间屏蔽: uint a = (…), b = (…); uint mask = -(uint)(a < b); a = ((a + b) & mask) | (a & ~mask); 注意a < b是0或1,掩码是0x00000000或0xFFFFFFFF。 同样,对于高级操作(C ++): Integer x […]

在C中使用&(addressof)和const变量

教科书说&(addressof)运算符不适用于不能应用于表达式, 常量或寄存器变量。 常量是否只表示像’A’,’7’等文字或用const关键字声明的变量? 我认为这意味着只有文字,因为以下代码编译: – int main() { const int i=10; const int *ip; ip = &i; }

“const int x = get();”在C中合法吗?我们可以在声明时将函数的返回值赋给常量吗?

这个论坛上一位备受赞誉的撰稿人”R..”在2天后明确地告诉了我: Initializers for objects of static storage duration must be constant expressions. The result of a function call is not a constant expression. 他在谈论全局变量。但是我不确定在main()函数中声明的常量是什么,或者是那个问题的任何函数。直觉上我觉得即使对于在函数内声明的常量也是如此,以下程序源自以下链接,其所谓的correct答案,让我感到困惑。 http://www.indiabix.com/c-programming/const/discussion-546 #include int get(); int main() { const int x = get(); printf(“%d”, x); return 0; } int get() { return 20; } 那么有人可以解释它是否在C中有效为一个常量赋值?

0LL或0x0UL是什么意思?

我正在阅读Google Go教程,并在常量部分中看到了这一点: 没有像0LL或0x0UL这样的常量 我尝试进行Google搜索,但所有出现的情况都是人们使用这些常量的情况,但没有解释他们的意思。 0x应该启动hex文字,但这些不是hex数字中可能出现的字符。

无法摆脱“此十进制常量仅在ISO C90中无符号”警告

我在我的哈希表实现上使用FNV哈希作为哈希算法,但我在这行的问题标题中收到警告: unsigned hash = 2166136261; 我不明白为什么会这样,因为当我这样做时: printf(“%u\n”, UINT_MAX); printf(“2166136261\n”); 我明白了: 4294967295 2166136261 这似乎是在我的机器的限制下…… 为什么我会收到警告,有什么方法可以摆脱它?

为长值明确声明L或UL的原因是什么?

从一个例子 unsigned long x = 12345678UL 我们一直都知道编译器需要在上面的例子中只看到“long”来设置4个字节(32位)的内存。 问题是为什么我们应该在长常量中使用L / UL,即使在声明它很长之后也是如此。