Sla*_*ure 8 c++ performance loops
初学者质疑,关于循环效率.我已经开始用C++编程(我的第一语言),并且一直在使用Bjarne Stroustrup的'Principles and Practice Using 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;
}
Run Code Online (Sandbox Code Playgroud)
我应该只针对"我"出现在一个循环中,还是在类型之间转换时根本不可能?除了将字符值转换为它的整数对应物(即当前方法的反面)或根本没有转换并且具有字母存储'@'之外,我无法想到除上述任何其他方式之外的其他方式.
Pat*_*ick 22
从jk开始,你甚至可以在循环中使用字母本身(字母<='z').我也会使用for循环,但那只是我.
for( char letter = 'a'; letter <= 'z'; ++letter )
std::cout << letter << "\t" << static_cast<int>( letter ) << std::endl;
Run Code Online (Sandbox Code Playgroud)
你应该首先瞄准清晰度,然后尝试微观优化.您可以更好地将其重写为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;
}
Run Code Online (Sandbox Code Playgroud)
你可以在不同的类型之间进行转换 - 这就是所谓的转换(static_cast上面代码中的构造).