C++用于char类型的循环
C++ for loop with char type
>字符'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
循环的每次迭代,将char
从a
递增到z
,并每次打印出来。在第二种方法中,将0
的偏移量增加到25
,然后打印出'a' + offset
。
你把这两种方法混合在第一行。开始循环时,letter
设置为'a'
,但您不知道其数值。然后比较letter
,看看它是否小于24
。在任何ASCII兼容的字符集中,字符'a'
的值为97
,所以这个条件永远不会通过
然后您在cout
线路上滥用++
。++
运算符试图修改其操作数,但'a'
是一个文字,因此无法修改。看看你的作业告诉了你什么。例如,您可以执行'a' + 1
以获得'b'
,因此这假设您有偏移量(在当前方法中没有(。
再说一遍,你有两个选择。首先:从'a'
开始,保持letter
为char
,并固定条件,使其检查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
}
}
- C++有多少类型的循环
- 为什么我的 for 循环给出错误:X 没有命名类型
- 对于检查 >=0 终止条件时的循环索引类型
- 为什么基于范围类型的大括号上循环init列表是非法的c++
- 循环访问模板类型
- for 循环说 - 错误 成员引用基类型"int [13]"不是结构或联合
- 如何在循环中创建不同类型的变量?
- 具有类型别名的循环依赖项
- 输入数据类型检查循环未按预期工作 (C++)
- 如果输入变量的数据类型与以前不同,如何使我的循环仍然正常运行?
- 循环依赖:无法删除不完整的类型
- C++参数类型以接受适用于基于范围的 for 循环的所有序列
- 返回类型 char* 的成员函数返回在 while 循环后包含不同字符串的地址
- 循环依赖(类对类型定义,类型定义对类),前向声明给出不明确的调用
- 如何在无效的数据类型输入后继续循环
- 使用4用于循环的4矩阵上的数组下标的“ int [int]类型”
- 无法推断模板参数"循环类型"
- C++中的循环类型依赖项死锁
- c++ 中带有容器迭代器的循环类型依赖关系(GCC 失败,而 MSVC 正常)
- 如何在互斥锁中进行循环类型排序