undefined-behavior

на первый взгляд, этот вопрос может показаться дубликат как обнаружить переполнение целого числа?, однако это на самом деле существенно отличаются. я обнаружил, что при обнаружении переполнения целого числа без знака довольно тривиально, обнаруживая подпись переполнения в C/C++ на самом деле сложнее, чем дум...

этот вопрос мотивирован тем, что я реализую криптографические алгоритмы (например, SHA-1) на C / C++, пишу портативный платформенный агностический код и тщательно избегаю неопределенное поведение. предположим, что стандартизированный криптографический алгоритм просит вас реализовать это: b = (a << 31)...

коллега показал мне это: у него есть выпадающий список и кнопка на веб-странице. Вот код: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ListItem item = new ListItem("1"); item.Attributes.Add("title", "A"); ListItem item2 =...

мой ответ этот вопрос была такая функция: inline bool divisible15(unsigned int x) { //286331153 = (2^32 - 1) / 15 //4008636143 = (2^32) - 286331153 return x * 4008636143 <= 286331153; } Он отлично работал на моей машине с компилятором VS2008, однако здесь это вообще не работает. кто-нибудь...

я наткнулся на этот код для замены двух целых чисел без использования временной переменной или использовать побитовые операторы. int main(){ int a=2,b=3; printf("a=%d,b=%d",a,b); a=(a+b)-(b=a); printf("na=%d,b=%d",a,b); return 0; } но я думаю, что этот код имеет неопределенное поведени...

на моей странице HTML5 у меня есть div с mousemove событие следующим образом: $('#canvas').mousemove(function(e){ xpos = e.offsetX; ypos = e.offsetY; $('#mouse').html("X : " + xpos + " ; Y : " + ypos); }); он отлично работает с Google Chrome. Но в Firefox, оба дают значение undefined. Я провери...

как мы знаем, переполнение целого числа со знаком является неопределенным поведением. Но есть кое-что интересное в C++11 cstdint документы: знаковый целочисленный тип с шириной ровно 8, 16, 32 и 64 бит соответственно не бит обивка и использование дополнения 2 для отрицательных значений (при условии, что р...

этот код C99 производит неопределенное поведение? #include <stdio.h> int main() { int a[3] = {0, 0, 0}; a[a[0]] = 1; printf("a[0] = %dn", a[0]); return 0; } в заявлении a[a[0]] = 1;,a[0] читается и изменяется. Я посмотрел проект N1124 ISO / IEC 9899. Он говорит (в 6.5 выражения): между ...

я раньше думал, что в C99, даже если побочные эффекты функций f и g вмешался, и хотя выражение f() + g() не содержит точки последовательности,f и g будет содержать некоторые, поэтому поведение будет неопределенным: либо f() будет вызываться перед g(), либо g() перед f(). Я уже не так уверен. Что делать, если...

во-первых, чтобы уточнить, я не про разыменование недействительного указателя! рассмотрим следующие два примера. Пример 1 typedef struct { int *p; } T; T a = { malloc(sizeof(int) }; free(a.p); // a.p is now indeterminate? T b = a; // Access through a non-character type? Пример 2 void foo(int *p) {}...