C ++ belirtimi şunları tanımlıyor mu?
- boole parametreleri için 'küçüktür' operatörünün varlığı ve varsa,
- 4 parametre permütasyonunun sonucu nedir?
Başka bir deyişle, aşağıdaki işlemlerin sonuçları spesifikasyon tarafından tanımlanmış mı?
false < false
false < true
true < false
true < true
Kurulumumda (Centos 7, gcc 4.8.2), aşağıdaki kod beklediğimi ortaya koyuyor (C'nin false değerini 0 ve true olarak 1 olarak temsil etme geçmişi göz önüne alındığında):
false < false = false
false < true = true
true < false = false
true < true = false
Çoğu (tümü?) Derleyicinin aynı çıktıyı vereceğinden emin olmamıza rağmen, bu C ++ belirtimine uygun mu? Ya da şaşkın, ancak şartnameye uygun bir derleyicinin, doğrunun yanlıştan küçük olduğuna karar vermesine izin veriliyor mu?
#include <iostream>
const char * s(bool a)
{
return (a ? "true" : "false");
}
void test(bool a, bool b)
{
std::cout << s(a) << " < " << s(b) << " = " << s(a < b) << std::endl;
}
int main(int argc, char* argv[])
{
test(false, false);
test(false, true);
test(true, false);
test(true, true);
return 0;
}
p <= q
anlamına gelir ! p implies q
p
q
<=
yanlışlıkla bir leftarrow olarak okunabilecek ve "yalnızca" (yani, "[maddi] ima ederse") rightarrow'un bazen benzer veya gayri resmi olarak yazılmasıdır =>
(yani, iki kat şaft benzeyen =
). . Bir leftarrow bazen "if" olarak okunur, ancak bunun "sadece" için bir rightarrow kullanımından çok daha az yaygın olduğuna inanıyorum.
std::min
ilgilistd::vector<bool>
olarak&&
.