Tag: 赋值运算符

我可以先声明一个数组并在以后给出它的值吗?

我试过这样做但是出错了。 为什么我不能这样做? int main() { char sweet[5]; sweet = “kova”; printf(“My favorite sweet is %s\n”, sweet); return 0; }

可能简单但令人困惑的分配错误

#include int main() { char gradesList[5]; gradesList[2] = “X”; printf(“%c”, gradesList[2]); } 当我尝试运行此代码时,我收到以下错误: 指向整数转换的指针不兼容 赋值从指针生成整数而不进行强制转换

关于“^ =”运算符的C和C ++之间的区别

我想使用表达式交换int *x和int *y指向的值 *x ^= *y ^= *x ^= *y; (好吧,我知道这个表达很尴尬,我只是想知道它的区别,没有冒犯。)这在C ++中有效,但在C中失败了。但是如果我把它分成三部分,如下所示 *x ^= *y; *y ^= *x; *x ^= *y; 它适用于两种语言。 那么,C和C ++中运算符^=的区别是什么?

三元运算符和赋值运算符

in C / C ++三元运算符实际上是否具有与赋值运算符相同的优先级? Luchian Grigore的回答说案件就像 a ? b : c = d 将永远推断为 a ? b : ( c = d ) 因为=和?:从右到左关联 在c ++中 k = 21 > 3 ? j = 12 : j = 10; 和 k = 1 > 3 ? j = 12 : j = 10; 两者都很好。 […]

条件运算符中的“错误:左值作为赋值的左操作数”

我是C的新手,今天我学会了“?” 运算符,它是if-else语句的简短类型。 但是,当我执行此代码时: int b; int x; b=3<2?x=12:x=34; 我收到错误“错误:左值作为赋值的左操作数需要左值”。 我不明白为什么会这样。 我想到的过程是程序首先将34分配给x,然后将x的值(即34)分配给b。 另一方面,我可以使用该语句作为 int b; int x; b=3<2?x=12:(x=34); 没有任何错误。 我查看了我的书,但没有任何帮助。 为什么我不能使用第一个语句? 我的电脑试图做什么? 谢谢…

初始化与赋值不同?

1.char str[] = “hello”; //legal 2.char str1[]; str1 = “hello”; // illegal 我知道“hello”从字符串文字池中返回字符串文字的地址,该地址不能直接分配给数组变量。 在第一种情况下,将“hello”文字中的字符逐个复制到数组中,并在末尾添加“\ 0”。 这是因为赋值运算符“=”在这里被重载以支持这个吗? 我还想知道其他有趣的情况,其中初始化与赋值不同。

将一个字符数组分配给另一个给出错误。 为什么?

数组的名称是指向第一个元素的指针。 那么为什么一个字符数组不能分配另一个数组呢? #include int main() { char str1[]=”Hello”; char str2[10]; char *s=”Good Morning”; char *q; str2=str1; /* Error */ q=s; /* Works */ return 0; }

C:传递(双重)作业

我在C中使用了这样的构造: list->head = list->tail = NULL; 现在我考虑这是否真的意味着我想的。 这是什么意思? list->head = NULL; list->tail = NULL; 要么 list->head = list->tail; list->tail = NULL; thx澄清

将*&数组分配给指针

以下摘录来自Harbinson,Steele C:A Reference Manual(第5版) 。 根据这本书, p的两个任务是等价的。 7.5.6地址运营商 int a[10], *p; p = a; p = *&a; 然而,根据C faq Question 6.12, a是指向int的类型指针,而&a是指向int数组的类型指针。 所以我们应该在第二个赋值p = *&a得到一个类型错误,因为我们试图将一个int数组赋给一个指针。 为什么赋值p = *&a正确的?

为什么我们允许更改“const”限定变量的值?为什么指针允许这样做,但不允许赋值?

考虑以下2个程序prog1和prog2。如果我尝试使用指针ptr更改const限定变量i的值,我得到警告(而不是错误) “initialization discards qualifiers from pointer target type|” ,但程序运行然后显示新值。但是如果我尝试使用赋值语句在第二个程序中更改i的值,我得到assignment of read-only variable ‘i’|的错误 (不是警告) assignment of read-only variable ‘i’| 。 以下是此前提产生的混淆: 1)为什么我们允许在任何情况下更改只读const限定变量的值?它是否会破坏使用const限定符的目的?如果我们尝试这样做,我们不应该得到错误吗? 2)即使由于一些奇怪的原因我们被允许更改常量值,为什么在使用指针(允许,带警告)和使用赋值更改只读const限定变量的值之间进行区分操作(根本不允许,并给我们一个错误)? //prog1 #include int main () { const int i=8; int *ptr=&i; *ptr=9; printf(“%d”,*ptr); //Prints new value nevertheless } 警告:初始化从指针目标类型中丢弃限定符 //prog2 #include int main() { const int i=8; i=10; printf(“%d”,i); } 错误:分配只读变量’i’| 编辑H2CO3 […]