gpt4 book ai didi

c - 转换后出错 : lvalue required as left operand of assignment

转载 作者:行者123 更新时间:2023-11-30 19:45:31 25 4
gpt4 key购买 nike

我有一个使用维吉尼亚密码方法加密字符串的函数。

void encrypt(const char * key, char * str) {
[...]
char * copy = duplicate(key); /*Like the strdup() function. It creates a copy of the string on the heap.*/
[...] /* Here , i ensure that copy has the same size as str*/
size_t k;
for (k=0;k<strlen(str);k++){
if ((str[k]>='A' && str[k]<='Z') || (str[k]>='a' && str[k]<='z')){
str[k]=(((str[k]+copy[k]))%26)+'A'; /*errors are at this line*/
}
else {
str[k]=str[k];
}
}

当我尝试加密时,出现此错误

error: conversion to 'char' from 'int' may alter its value [-Werror=conversion]

我知道 str[k] 可能需要转换为 char 类型(或 int?),但是当我用 (char)str[k] 或 (int)str[k] 替换 str[k] 时,我收到一个新错误。

error : lvalue required as left operand of assignment

在这里,我知道 (char)str[k] 不是左值,但我不明白为什么,因为 str 是 char 上的指针,而不是 const char。

所以我真的很想知道为什么 str|k] 被认为是非左值,因为我现在不明白为什么。

谢谢。

最佳答案

(char) x 生成一个 char 类型的新临时值(无论 x 的类型如何)。您无法分配这样的值,就像您无法分配诸如 x + y = z1 + 2 = n 之类的值一样。

如果您想消除转换警告,您应该转换您正在分配的值:

str[k] = (char) ( /* ... */ );

关于c - 转换后出错 : lvalue required as left operand of assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26207958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com