Я нашел, что вы должны изменить номер в [].
var channelID = "MY-ID";
var reqURL = "https://www.youtube.com/feeds/videos.xml?channel_id=";
$.getJSON("https://api.rss2json.com/v1/api.json?rss_url=" + encodeURIComponent(reqURL)+channelID, function(data) {
var link = data.items[0].link;
var id = link.substr(link.indexOf("=")+1);
$("#youtube_video").attr("src","https://youtube.com/embed/"+ id + "?controls=0&showinfo=0&rel=0");
var link = data.items[1].link;
var id = link.substr(link.indexOf("=")+1);
$("#youtube_video2").attr("src","https://youtube.com/embed/"+ id + "?controls=0&showinfo=0&rel=0");
var link = data.items[2].link;
var id = link.substr(link.indexOf("=")+1);
$("#youtube_video3").attr("src","https://youtube.com/embed/"+ id + "?controls=0&showinfo=0&rel=0");
});
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<iframe id="youtube_video" width="600" height="340" frameborder="0" allowfullscreen></iframe>
<iframe id="youtube_video2" width="600" height="340" frameborder="0" allowfullscreen></iframe>
<iframe id="youtube_video3" width="600" height="340" frameborder="0" allowfullscreen></iframe>
К вашему сведению, с gcc-4.3.3:
int foo(int a, int b) { return !a || b; }
int bar(int a, int b) { return ~a | b; }
Дает (от objdump-d):
0000000000000000 <foo>:
0: 85 ff test %edi,%edi
2: 0f 94 c2 sete %dl
5: 85 f6 test %esi,%esi
7: 0f 95 c0 setne %al
a: 09 d0 or %edx,%eax
c: 83 e0 01 and $0x1,%eax
f: c3 retq
0000000000000010 <bar>:
10: f7 d7 not %edi
12: 09 fe or %edi,%esi
14: 89 f0 mov %esi,%eax
16: c3 retq
Так, никакие ответвления, но вдвое больше инструкций.
И еще лучше, с _Bool
(спасибо @litb):
_Bool baz(_Bool a, _Bool b) { return !a || b; }
0000000000000020 <baz>:
20: 40 84 ff test %dil,%dil
23: b8 01 00 00 00 mov $0x1,%eax
28: 0f 45 c6 cmovne %esi,%eax
2b: c3 retq
Так, использование _Bool
вместо int
хорошая идея.
Так как я обновляю сегодня, я подтвердил, что gcc 8.2.0 производит подобный, хотя не идентичный, результаты для _Bool:
0000000000000020 <baz>:
20: 83 f7 01 xor $0x1,%edi
23: 89 f8 mov %edi,%eax
25: 09 f0 or %esi,%eax
27: c3 retq
~p | q
Для визуализации:
perl -e'printf "%x\n", (~0x1100 | 0x1010) & 0x1111'
1011
В трудном коде это должно быть быстрее, чем"! p || q", потому что у последнего есть ответвление, которое могло бы вызвать останов в ЦП из-за ошибки предсказания ветвлений. Поразрядная версия детерминирована и, в качестве награды, может сделать в 32 раза больше работы в 32-разрядном целом числе, чем булева версия!
!p || q
много быстро. серьезно, не волнуйтесь об этом.
Можно читать при получении булевых выражений из таблиц истинности (также видят каноническую форму), о том, как можно выразить любую таблицу истинности как комбинацию булевых примитивов или функций.