Tag: 赋值运算符

C中赋值表达式的结果是什么?

在以下代码中: int c; while((c=10)>0) c = 10评估为什么? 是1表示值10成功分配给变量c,还是10? 为什么?

C / C ++赋值运算符实现的低级细节。 它返回了什么?

我总是新手到C ++世界(也是C)。 而且不知道它的所有细节。 但有一件事让我感到困扰。 它是如下构造: while (a=b) {…} 。我理解这种魔法是有效的,因为C和C ++中的赋值运算符返回了一些东西。 所以问题是:它返回了什么? 这是一个记录在案的东西吗?它在C和C ++中的作用是否相同。 关于赋值运算符及其在C和C ++中的实现的低级细节(如果存在差异)将非常感激! 我希望这个问题不会被关闭,因为从低层次的角度来看,我无法找到关于这个主题的全面解释和良好的材料。

“来自指针的整数/整数的指针没有强制转换”问题

这个问题是整数和指针问题之间所有初始化/赋值的FAQ条目。 我想写一个指针设置为特定内存地址的代码,例如0x12345678 。 但是当用gcc编译器编译这个代码时,我得到“初始化使得整数没有强制转换的指针”警告/错误: int* p = 0x12345678; 类似地,这段代码给出了“初始化从没有强制转换的指针生成整数”: int* p = …; int i = p; 如果我在变量声明行之外做同样的事情,那么消息是相同的但是说“赋值”而不是“初始化”: p = 0x12345678; // “assignment makes pointer from integer without a cast” i = p; // “assignment makes integer from pointer without a cast” 其他流行编译器的测试也会给出错误/警告消息: clang说“指针转换不兼容的整数” icc说“ int类型的值不能用于初始化int*类型的实体” MSVC(cl)说“初始化int*与int*的间接级别不同”。 问题:以上示例是否有效? 还有一个后续问题: 这不会给出任何警告/错误: int* p = 0; 为什么不?

在C中,+ = b比a = a + b更有效吗?

我在某些语言中知道以下内容: a += b 比以下更有效: a = a + b 因为它不需要创建临时变量。 这是C的情况吗? 使用+ =更高效(因此也-= *=等)

数组类型char 不可分配

那么这是我的第一篇文章。 我一直在尝试做这个选择选择的东西,我希望用户只选择数字而不是键入它们(更容易)但是当我希望数字等于一个字符串时,它说“数组类型char[30]不是分配”。 即使在后面我也放了分号。 #include int main() { int choice1; char word[30]; printf(“You have three choice.\n”); printf(“[1] Jump [2] Run [3] Dance\n”); scanf(“%d”,&choice1); if (choice1 == 1) { word = “Jump” //Error #1 } else if (choice1 == 2) { word = “Eat” //Error #2 } else if (choice1 == 3) { word = “Sleep”; //Error […]

指定一个整数的指针

我可以指定一个整数变量的指针吗? 如下所示。 int *pointer; int array1[25]; int addressOfArray; pointer = &array1[0]; addressOfArray = pointer; 有可能这样做吗?