// Когда не хочется придумывать новое имя другой переменной, которая точно такая же по смыслу.
// И хочется дать ей константность - ее менять я не собираюсь, в смысле изменчивости переменной.
const bool ok = foo1();
if (!ok)
return;
{
const bool ok = foo2();
if (!ok)
return;
}
// Когда надо защитить мьютексом изменение переменной, на как можно более короткое время.
... некий код
{
const std::lock_guard<std::mutex> lock(_mutex);
++i;
// _mutex is automatically released when lock goes out of scope
}
... продолжаем код
#pragma comment (lib,"Ws2_32.lib")
#include <winsock2.h>
#include <WS2tcpip.h>
#include <Windows.h>
#include <iostream>
#include <string>
int main() {
WSADATA wsa;
std::string domain;
int status;
struct addrinfo hints = { 0 }, * res, * p;
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
// ошибки выводятся в ANSI кодировке, а консоль по умолчанию в OEM
SetConsoleCP(GetACP());
SetConsoleOutputCP(GetACP());
// На Windows необходима инициализация сетевой библиотеки
if (status = WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
std::cout << "Error: of getaddrinfo: " << get_error_message(status) << std::endl;
// принято возвращать причину ошибки, а не только сам факт
return status;
}
std::cout << ("Enter domain: ");
// даже доменные имена могут иметь длину 256 символов
// пользователь же может вообще ввести сколько ему угодно
std::getline(std::cin, domain);
if (status = getaddrinfo(domain.c_str(), "80", &hints, &res) != 0) {
std::cout << "Error: of getaddrinfo: " << get_error_message(status) << std::endl;
return status;
};
char ipstr[INET6_ADDRSTRLEN];
for (p = res; p != NULL; p = p->ai_next) {
/*const char* ipver;*/
void* addr;
if (p->ai_family == AF_INET) {
struct sockaddr_in* ipv4 = (struct sockaddr_in*)p->ai_addr;
addr = &(ipv4->sin_addr);
/*ipver = "IPv4:";*/
}
else {
struct sockaddr_in6* ipv6 = (struct sockaddr_in6*)p->ai_addr;
addr = &(ipv6->sin6_addr);
/*ipver = "IPv6:";*/
}
inet_ntop(p->ai_family, addr, ipstr, sizeof(ipstr));
std::cout << "addres: " << ipstr << std::endl;
};
freeaddrinfo(res);
system("pause");
// деструктор сетевой библиотеки
WSACleanup();
return 0;
}
vabka@DESKTOP-7AFIA69:~/repos$ time (python3 test.py) 2>&1 1>/dev/null
real 0m0.381s
user 0m0.359s
sys 0m0.016s
vabka@DESKTOP-7AFIA69:~/repos$ time (tcc -run test.c) 2>&1 1>/dev/null
real 0m0.081s
user 0m0.047s
sys 0m0.031s
vabka@DESKTOP-7AFIA69:~/repos$ cat test.c
#include <stdio.h>
int main() {
int i = 0;
while(i < 1000000) {
printf("%d\n", i);
i++;
}
return 0;
}
vabka@DESKTOP-7AFIA69:~/repos$ cat test.py
i = 0
while i < 1000000:
print(i)
i += 1
vabka@DESKTOP-7AFIA69:~/repos$
real 0m58.757s
user 0m1.094s
sys 0m11.078s
real 1m1.762s
user 0m2.953s
sys 0m13.594s
1=1; DROP TABLE Database;
что будет? Написал #include math.h
#include "math.h"?
Ошибка 451 или «Недоступно по юридическим причинам» (англ. Unavailable For Legal Reasons) — стандартный код ответа HTTP, означающий, что доступ к ресурсу закрыт, например, по требованию органов государственной власти или правообладателя в случае нарушения авторских прав. Был одобрен IESG 21 декабря 2015 года[1] и опубликован как RFC 7725 в феврале 2016 года. Код ошибки является отсылкой к роману Рэя Брэдбери «451 градус по Фаренгейту»[2]. Можно сказать, что код HTTP 451 — это уточняющая версия кода HTTP 403[3].
Насколько критичной проблемой для программиста является ручное управление памятью, которое называют недостатком языка Си?
Новый язык программирования Раст, как заявляют, лишен этого недостатка
разве общее число ошибок не перераспределяется на другие недостатки
являются ли ошибки с памятью ошибками программиста
которые вылились бы в другое русло, не будь этой возможности ошибочного использования памяти?
float value = (float)analogReag(A1)*5*1000/1024;
int value_int = (int)value_int;
switch(value_int) {
case(4442):
current = 120;
//Объявли массив table из 1024 значений
//Для каждого значения ввели правильный ответ
int table[] = {12, 34, 64, 33, ..., 954}
//Где-то в коде
int value = analogReag(A1);
current = table[value];