C++ 什么代码可以使这个循环工作?
这是我在面试时问的问题-C++ 什么代码可以使这个循环工作?,c++,loops,C++,Loops,这是我在面试时问的问题- for( blah blah ) { cout<<"World"; } (废话){code> cout这个怎么样 const char *p = "Hello "; *p; cout << *p, p++); if (1 for(int i = 0 ; std::cout << "Hello world!", i < 0; ) { std::cout<<"World"; } const c
for( blah blah ) {
cout<<"World";
}
(废话){code>
cout这个怎么样
const char *p = "Hello "; *p; cout << *p, p++); if (1
for(int i = 0 ; std::cout << "Hello world!", i < 0; ) {
std::cout<<"World";
}
const char*p=“Hello”*p;cout我花了一点时间试图将循环控制到单个迭代:
#include <iostream>
#include <ios>
using namespace std;
int main() {
for (cout << "Hello "; cout; cout.setstate(ios::badbit)) { cout << "World"; }
}
如果你能把任何东西放进for的话,为什么还要担心for循环的主体呢
const char *p = "Hello "; *p; cout << *p, p++); if (1
for(int i = 0 ; std::cout << "Hello world!", i < 0; ) {
std::cout<<"World";
}
for(inti=0;std::cout他们没有说您需要实际运行循环,是吗
#include <iostream>
#include <ios>
using namespace std;
int main() {
for (int i = (cout << "Hello World!",0); i; ) { cout << "World"; }
}
#包括
#包括
使用名称空间std;
int main(){
对于(int i=(cout 使用C++不识别空间的事实),
for(int i = 0; i < 0; ++i); if(true){ cout << "Hello World!"; } else { //blah blah ) {
cout<<"World";
}
for(inti=0;i<0;++i);if(true){cout有两个问题需要解决
循环头中的输出
抑制迭代
在for声明的第一部分中,您可以执行几乎每个命令。因此,最好在这里打印所需的输出
要抑制迭代,只需输入false
作为条件。标题的最后部分可以留空
#include <iostream>
using namespace std;
int main()
{
for ( cout<<"Hello World!"<<endl ; false ; )
{
cout<<"World"<<endl;
}
return 0;
}
#包括
使用名称空间std;
int main()
{
因为(cout没有人费心修复明显损坏的代码,它访问一些神秘的从未定义过的cout
,这显然是非常可怕的代码,所以…修复方法如下:
#include <iostream>
#define BLAH \
struct { \
template <typename T> \
void operator<<(T const& t) const { \
::std::cout << ":- Hello " << t << " !\n"; \
} \
bool okay;\
} cout{true}; \
cout.okay; \
cout.okay = false
int main() {
for(BLAH) {
cout<<"World";
}
}
显然,for循环只不过是一种转移。请这样看:
make CXXFLAGS=-Wall\ -Wextra\ -pedantic\ -std=c++11 CXX=clang++ hw
for(
/* Your Code Here */
) { cout << "World"; }
当然,最后一步只是出于纯粹的审美原因,如果需要,可以省略
附言:它实际上打印的是“你好,世界!”,而不是“:-你好,世界!”我认为这是问题的确切答案。把它改为符合其他格式是留给读者的一个练习。这篇访谈是按预期的方式来执行的。提示:什么可以进入<代码> < <代码>循环?不。你需要学习C++。感叹号是所需输出的一部分吗?是的!是输出中需要的!您忘记了结尾的“!”;@lejlot我认为这是OP的感叹号,而不是原始问题。OP可以澄清它是否重要。+1用于使用for
正文。是的,“!”仍然在输出中。顺便说一句,谢谢您的回答!您可以使它更简洁:for(;std::难道你忘了笑脸和解释标记前的空格。:)if(1)
中的结束语)
不能是“废话”的一部分。否则,整个事情将是for(const char*p=“Hello”;*p;cout@DyP:啊,是的,明白了。一个注释!好主意。缩写:for(
++;0;);很可能,这是不正确的,因为您在“blah blah”@dionadar后面缺少了右括号,它说的是//blah blah){
@AbhinavGauniyal:不是。cout
对象位于std
命名空间内,如果不指定命名空间,您也无法访问该命名空间。您必须主动说出using::std::cout
或using namespace::std
以使符号cout
在std
之外可见>名称空间。现在,即使您已经这样做了,也没有人阻止您使用您自己的局部变量跟踪iostream的cout
。感谢您让我开心!:)+1我可能对此太过火了……但只是稍微有点;)
for(
/* Your Code Begins */
;0;);
struct cout {
void operator<<(cout world)
{
hello <world> !"";
}
char const* out;
cout() : out(0) { }
cout(char const* out) : out(out) { }
operator bool() { return !out; }
struct typeof
{
typeof(decltype(::std::cout) const&) { }
void operator>(bool a)
{
::std::cout << (!a ? "!" : "?");
}
};
struct
{
typeof operator<(cout c)
{
return typeof(::std::cout << "Hello " << c.out);
}
} hello;
} cout;
if(cout
/* Your Code Ends */
) { cout << "World"; }
;0;);struct cout{void operator<<(cout world){
hello <world>!
"";}char const*out;cout():out(0){}cout(char const*out):out(out){}
operator bool(){return!out;}struct
typeof{typeof(decltype(::std::cout)const&){}void
operator>(bool a){::std::cout<<(!a?"!":"?");}};
struct{typeof operator<(cout c){return
typeof(::std::cout<<"Hello "<<c.out);}}hello;}cout;if(cout