C++用于char类型的循环

C++ for loop with char type

本文关键字:循环 类型 char 用于 C++      更新时间:2023-10-16

>字符'b'char('a'+1),'c' is char('a'+2)等。使用循环写出一个字符表及其相应的整数值
由于这个错误,我无法完成这个练习
错误:需要作为增量操作数的左值

  for(char a='a'; a<24; ++a)
    {
    cout<<char('a'++);
    }

循环体永远不会使用控制表达式a < 24执行,因为您已经用字符a初始化了变量a,并且所有可打印字符都不小于ASCII值32。
试试这个:

for(char a='a'; a < 'a' + 24; ++a)
{
    cout << a;
}

如果您将变量命名为letter而不是a,我想您会不那么困惑,因为它只在开头表示字母"a"。

for(char letter='a'; letter<24; ++letter)
{
  cout<<char('a'++);
}

我假设你真的想打印出整个字母表,而不仅仅是前24个字母。

从这里看,你试图将两种可能的方法混合在一起。在第一种方法中,随着for循环的每次迭代,将chara递增到z,并每次打印出来。在第二种方法中,将0的偏移量增加到25,然后打印出'a' + offset

你把这两种方法混合在第一行。开始循环时,letter设置为'a',但您不知道其数值。然后比较letter,看看它是否小于24。在任何ASCII兼容的字符集中,字符'a'的值为97,所以这个条件永远不会通过

然后您在cout线路上滥用++++运算符试图修改其操作数,但'a'是一个文字,因此无法修改。看看你的作业告诉了你什么。例如,您可以执行'a' + 1以获得'b',因此这假设您有偏移量(在当前方法中没有(。

再说一遍,你有两个选择。首先:从'a'开始,保持letterchar,并固定条件,使其检查letter是否小于或等于'z'的值,然后只打印出letter。第二:将letter改为offset,从0开始,当它小于26时递增,然后打印出'a' + offset

但是,请注意,这两种方法都假设字母在执行字符集中具有连续值。这不一定是真的。

++运算符是一个"隐藏赋值"(操作数的值会随之更改(。但是你只能给变量赋值,而"a"不是。

我知道这已经关闭了一段时间,但由于练习是关于while循环而不是for循环,我想我会提供我的解决方案。我只是在自己翻阅这本书,将来可能会有人偶然发现这本书。

int i = 0;
char n = 'a';   // this will list the alphabet
int conv = 0;   
conv = n;       // this converts the alphabet into integer
while (i < 26) {        // starts from 0 and goes to 25
    cout << char(n + i) << 't' << conv + i << 'n';
    ++i;
}

您可以使用以下内容:(http://ideone.com/akwGhl)

#include <iostream>
int main()
{
    for (char c = 'a'; c <= 'z'; ++c) {
        std::cout << "letter " << c << " has value " << int(c) << std::endl;
    }
    return 0;
}

嘿,通过故障排除,我获得了一个有效的示例,我还没有完全理解我的代码是如何工作的,但由于这里向我提出的解决方案对我的水平来说似乎太技术了,我认为我应该发布我的

#include"header files . h"//i use the libraries given in the book
int main () {
    char a ='a';
    int i = 0 ;
    while (i <= 25)//for (i = 0 ; i <= 25 ; i++)
//for those who used for
{
        cout << a << 't' << 'a' + i << endl;
        a += 1; // augments the character value of a to b ... then to z
        i++; // augments the value of i allowing us thus to make the augmentation,if you are using the for structure do not put I in your code
        }
    }