我刚刚遇到以下代码的一个非常奇怪的结果。
#include <iostream>
using namespace std;
const int N = 3;
bool gen(int l1, int l2, int p) {
if(p == N-1) {
if (l1 == l2) {
cout << "sth";
return false;
}
}
else
return gen(l1+1, l2, p+1) || gen(l1, l2+1, p+1));
}
int main() {
if(gen(0,0,0)) cout << "yes";
else cout << "no";
return 0;
}
该程序绝对没有任何内容,它只是一个模拟。为什么每次都写“是”,即使我不允许它在任何地方这样做。而且,输出不包含&#34; sth&#34;字。另外,当我改变时:
cout << "sth";
return true;
成:
cout << "sth";
return false;
它仍然会产生"yes"
作为输出。
怎么会发生?
答案 0 :(得分:3)
问题是,如果 < ?php
$items = array(
'item1' => 'I love jquery4u',
'item2' => 'You love jQuery4u',
'item3' => 'We love jQuery4u'
);
header('Content-type: application/json');
echo json_encode($items);
?>
和return
,您的功能将退出而不会实际点击p == N-1
。如果它被设置为合理的警告级别,你的编译器会警告你。
这会触发未定义的行为,因此可能会发生任何输出。 (我得到了#34;没有&#34;例如clang。)