Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 赋值的左操作数需要左值<;——我不明白这些_C - Fatal编程技术网

C 赋值的左操作数需要左值<;——我不明白这些

C 赋值的左操作数需要左值<;——我不明白这些,c,C,为什么每次我想做这些时都会出现这种情况: ((unsigned char)a.ID[b])=((unsigned int)a.ID[b])/ 10; a、 ID是一个无符号字符,它包含一组位。赋值的目标必须是左值,即引用变量位置的表达式。但是强制转换表达式返回一个右值——一个与内存中特定存储位置无关的值。尝试分配给强制转换表达式是没有意义的,因为它不是一个可以存储的位置 您必须在右侧进行两次造型: a.ID[b] = (unsigned char)(((unsigned int)a.ID[b]

为什么每次我想做这些时都会出现这种情况:

((unsigned char)a.ID[b])=((unsigned int)a.ID[b])/ 10;

a、 ID是一个无符号字符,它包含一组位。赋值的目标必须是左值,即引用变量位置的表达式。但是强制转换表达式返回一个右值——一个与内存中特定存储位置无关的值。尝试分配给强制转换表达式是没有意义的,因为它不是一个可以存储的位置

您必须在右侧进行两次造型:

a.ID[b] = (unsigned char)(((unsigned int)a.ID[b])/ 10);
在执行算术之前,内部强制转换将
无符号字符
转换为
无符号整数
,然后外部强制转换将结果转换回
无符号字符

但一开始可能不需要演员
char
是一种整数类型,因此您可以对其执行算术运算,就像对
int
执行算术运算一样。原始
无符号字符
除以
10
的结果将与首次将其强制转换为
无符号整数
时的结果相同。你可以简单地写:

a.id[b] /= 10;

赋值的目标必须是左值,即引用变量位置的表达式。但是强制转换表达式返回一个右值——一个与内存中特定存储位置无关的值。尝试分配给强制转换表达式是没有意义的,因为它不是一个可以存储的位置

您必须在右侧进行两次造型:

a.ID[b] = (unsigned char)(((unsigned int)a.ID[b])/ 10);
在执行算术之前,内部强制转换将
无符号字符
转换为
无符号整数
,然后外部强制转换将结果转换回
无符号字符

但一开始可能不需要演员
char
是一种整数类型,因此您可以对其执行算术运算,就像对
int
执行算术运算一样。原始
无符号字符
除以
10
的结果将与首次将其强制转换为
无符号整数
时的结果相同。你可以简单地写:

a.id[b] /= 10;

您无法分配给强制转换的结果。为什么要强制转换
a.ID[b]
而它已经是
无符号字符
。您可以强制转换右侧以更改计算的类型,您不需要(也不能,除非在取消引用后出现可怕的指针别名错误)将右侧强制转换为新的赋值类型。尝试将标题更改为“作为赋值的左操作数所需的左值”但我不想这样,因为已经有一个关于这个题目的问题了。Lol。您无法分配强制转换的结果。为什么要强制转换
a.ID[b]
而它已经是
无符号字符
。您可以强制转换右侧以更改计算的类型,您不需要(也不能,除非在取消引用后出现可怕的指针别名错误)将右侧强制转换为新的赋值类型。尝试将标题更改为“作为赋值的左操作数所需的左值”但我不想这样,因为已经有一个关于这个题目的问题了。Lol.如果真正的目的是在计算之前转换为
无符号的
(如果类型是有符号的,则会产生差异),最简单的方法是使用
10U
,而不是
10
。但是在这种情况下,原始类型是无符号的,所以他只是在计算之前扩展大小。加法或乘法可能会有不同,但除法时不会。是的,我知道。我只是说,因为人们在拼写a类型转换时非常容易,所以使用正确类型的常量就足够了。如果目的真的是在计算之前转换为
无符号的
(如果类型是有符号的,这可能会产生影响)最简单的方法是使用
10U
而不是
10
。但是在这种情况下,原始类型是无符号的,所以他只是在计算之前扩展大小。加法或乘法可能会有不同,但除法时不会。是的,我知道。我只是说,因为人们在拼写a方面非常容易,所以使用正确类型的常量就足够了。