初学者提问,上循环效率。我已经开始使用C++ (我的第一种语言)编程,并且一直在使用Bjarne Stroustrup的“使用C++的原则和实践”。我一直在学习前面的章节,并且刚刚被介绍了循环的概念。
关于循环的第一个练习要求我这样做:字符'b‘是char('a'+1),'c’是char('a'+2),依此类推。使用一个循环写出一个字符表及其相应的整数值:
A 97,b 98,...,z 122
尽管我使用了大写,但我创建了以下内容:
int number = 64; //integer value for @ sign, character before A
char letter = number;//converts integer to char value
int i = 0;
while (i<=25){
cout << ++letter << "\t" << ++number << endl;
++i;
}我的目标是在循环中只出现'i‘,还是在类型之间转换时根本不可能?除了将字符值转换为其对应的整数(即与当前方法相反),或者根本不进行转换而将字母存储为“@”之外,我实在想不出还有什么其他方法可以做到这一点。
发布于 2010-01-22 17:34:16
你应该首先以清晰为目标,然后尝试微优化。您最好将其重写为for循环:
const int offsetToA = 65;
const int numberOfCharacters = 26;
for( int i = 0; i < numberOfCharacters; ++i ) {
const int characterValue = i + offsetToA;
cout << static_cast<char>( characterValue ) << characterValue << endl;
}您可以在不同的类型之间进行转换-这称为类型转换(上面代码中的static_cast构造)。
发布于 2010-01-22 17:38:35
从jk开始,你甚至可以在循环中使用字母本身(字母<= 'z')。我也会使用for循环,但这只是我的情况。
for( char letter = 'a'; letter <= 'z'; ++letter )
std::cout << letter << "\t" << static_cast<int>( letter ) << std::endl;发布于 2010-01-22 17:35:09
这样做没有什么特别低效的地方,但当然可以只在chars和it之间进行转换( char是一个整型)。这意味着您只需要存储1个计数器,而不是当前拥有的3个(i,字母+数字
此外,对于从固定的开始到结束的循环,' for‘循环可能更惯用(尽管您可能还没有遇到这个问题!)
https://stackoverflow.com/questions/2116221
复制相似问题