{"id":286617,"date":"2017-05-19T17:45:04","date_gmt":"2017-05-19T13:45:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=286617"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=286617","title":{"rendered":"\u0417\u043b\u043e \u0436\u0438\u0432\u0451\u0442 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/aab\/470\/783\/aab470783a9ba1903260167fc424cc73.png\" alt=\"\u0417\u043b\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\"\/><br \/>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043c\u043d\u044f\u0442 \u043c\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab\u042d\u0444\u0444\u0435\u043a\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\u00bb. \u0412 \u043d\u0435\u0439 \u0438\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u043e \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0439 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438: \u043e\u0448\u0438\u0431\u043a\u0430, \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043d\u043e\u0432\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438. \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0442\u044f\u0433\u043e\u0442\u0435\u044e\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0422\u0430\u043a\u043e\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c, \u043e\u0434\u043d\u0430\u043a\u043e, \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043e\u0448\u0438\u0431\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0448\u043e\u043a\u0438\u0440\u0443\u044e\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f. \u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u043e\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438 \u0441\u0442\u0440\u0430\u0448\u043d\u043e.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u043a\u0430<\/h2>\n<p>  \u042f \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u042d\u0442\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u043e\u043f\u044b\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 C, C++ \u0438 C#.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0434\u0451\u0442 \u0440\u0435\u0447\u044c, \u043d\u043e\u0441\u044f\u0442 \u0442\u0430\u043a\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u043a\u0430\u043a <i>IsEqual<\/i>, <i>Equals<\/i>, <i>Compare<\/i>, <i>AreEqual<\/i> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0418\u043b\u0438 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <i>==<\/i>, <i>!=<\/i>.<\/p>\n<p>  \u042f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 <a href=\"https:\/\/www.viva64.com\/ru\/inspections\/\">\u0441\u0442\u0430\u0442\u0435\u0439<\/a> \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f. \u042f \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0438 \u0438\u0437\u0443\u0447\u0438\u043b <a href=\"https:\/\/www.viva64.com\/ru\/examples\/\">\u0431\u0430\u0437\u0443<\/a> \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0430\u043c\u0438 \u043e\u0448\u0438\u0431\u043e\u043a. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e \u0431\u0430\u0437\u0435 \u0431\u044b\u043b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u043f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430 <i>Cmp<\/i>, <i>Equal<\/i>, <i>Compare<\/i> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0438\u043c \u0438 \u0448\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c.<\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u044d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u0445\u043e\u0436\u0430 \u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u0442\u044c\u0438 \u00ab\u042d\u0444\u0444\u0435\u043a\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\u00bb. \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u044f \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044e \u0438 \u0440\u0435\u0448\u0438\u043b \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0435\u0451 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u044f \u043d\u0435 \u0437\u043d\u0430\u044e \u043a\u0430\u043a\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043c\u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u044e: \u043a\u0430\u043a \u0438 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u2014 \u043f\u043e\u0437\u0436\u0435. \u0421\u0435\u0439\u0447\u0430\u0441 \u0436\u0435, \u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443\u044e\u0441\u044c \u0438\u043d\u0442\u0443\u0438\u0446\u0438\u0435\u0439 \u0438 \u043c\u043e\u0433\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f\u043c\u0438. \u041e\u043d\u0438 \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043c\u043d\u043e\u0433\u043e, \u0438 \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u043e, \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432.<\/p>\n<h2>\u041f\u0441\u0438\u0445\u043e\u043b\u043e\u0433\u0438\u044f<\/h2>\n<p>  \u041d\u0430 \u043c\u0438\u043d\u0443\u0442\u043a\u0443 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u0441\u0442\u0430\u0442\u044c\u0435 &quot;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0260\/\">\u042d\u0444\u0444\u0435\u043a\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/a>&quot;. \u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0447\u0438\u0442\u0430\u043b\u0438 \u0435\u0451, \u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u0443\u0437\u0443 \u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0435\u0439. \u0415\u0441\u0442\u044c \u0438 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b: &quot;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0485\/\">\u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/a>&quot;. <\/p>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0443\u0436\u0435 \u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0430\u043c\/\u0437\u0430\u0434\u0430\u0447\u0430\u043c, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430. \u041a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0438\u0437 \u043d\u0438\u0445, \u043e\u043d \u0441 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0443, \u0447\u0435\u043c \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445.<\/p>\n<p>  \u042f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u0447\u0430\u0441\u0442\u043e \u043d\u0435 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u0439, \u0441\u0447\u0438\u0442\u0430\u044f \u0435\u0451 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043e\u043d \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430\u0434 \u043d\u0438\u043c. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443:  <\/p>\n<pre><code class=\"cpp\">bool IsLuidsEqual(LUID luid1, LUID luid2) {   return (luid1.LowPart == luid2.LowPart) &amp;&amp;          (luid2.HighPart == luid2.HighPart); }<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>RunAsAdmin Explorer Shim<\/b> (C++): <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;==&#8217; operator: luid2.HighPart == luid2.HighPart RAACommon raacommonfuncs.cpp 1511<\/p>\n<p>  \u041e\u043f\u0435\u0447\u0430\u0442\u043a\u0430. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e: <i>luid1.HighPart == luid2.HighPart<\/i>.<\/p>\n<p>  C\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u043a\u043e\u0434 \u043f\u0440\u043e\u0441\u0442. \u0412\u0438\u0434\u0438\u043c\u043e, \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u043a\u043e\u0434\u0430 \u043a\u0430\u043a \u0440\u0430\u0437 \u0432\u0441\u0451 \u0438 \u043f\u043e\u0440\u0442\u0438\u0442. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0442\u0430\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0438 \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439. \u041e\u043d \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0435\u0448\u0430\u0435\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434. \u042d\u0442\u043e \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0439, \u043d\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u043e\u0433\u043e, \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041c\u044b\u0441\u043b\u044f\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0443\u0436\u0435 \u0442\u0430\u043c \u0438\u2026 \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443.<\/p>\n<p>  \u0412\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0440\u0435\u0434\u043a\u043e \u043f\u0438\u0448\u0443\u0442 \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u044b \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041e\u043f\u044f\u0442\u044c \u043f\u043e\u0434\u0432\u043e\u0434\u0438\u0442 \u043e\u0431\u043c\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041a\u0430\u0436\u0435\u0442\u0441\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u043c \u0438\u0445 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0432\u0435\u0434\u044c \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0438 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0435. \u0427\u0435\u043b\u043e\u0432\u0435\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043e\u0442\u043d\u0438 \u0442\u0430\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0437\u0430 \u0441\u0432\u043e\u044e \u0436\u0438\u0437\u043d\u044c, \u043d\u0435\u0443\u0436\u0435\u043b\u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0448\u0438\u0431\u043a\u0443?! \u041c\u043e\u0436\u0435\u0442 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442.<\/p>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0445\u043e\u0447\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u0434\u0451\u0442 \u043d\u0435 \u043e \u043a\u043e\u0434\u0435 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0447\u0430\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0420\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0432 \u043a\u043e\u0434\u0435 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043a\u0430\u043a GCC, Qt, GDB, LibreOffice, Unreal Engine 4, CryEngine V, Chromium, MongoDB, Oracle VM Virtual Box, FreeBSD, WinMerge, CoreCLR, MySQL, Mono, CoreFX, Roslyn, MSBuild \u0438 \u0442.\u0434. \u0412\u0441\u0451 \u043e\u0447\u0435\u043d\u044c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e.<\/p>\n<p>  \u042f \u043f\u043e\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0447\u0442\u043e \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0440\u0430\u0448\u043d\u043e \u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u0441\u043f\u0430\u0442\u044c.<\/p>\n<h2>\u041e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u0412\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 C, C++ \u0438 C#, \u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u044d\u0442\u0438 \u044f\u0437\u044b\u043a\u0438 \u0441\u043c\u044b\u0441\u043b\u0430 \u043d\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432.<\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: A &lt; B, B &gt; A<\/h3>\n<p>  \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438:<\/p>\n<ul>\n<li>A &lt; B<\/li>\n<li>A &gt; B<\/li>\n<\/ul>\n<p>  \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0441\u0447\u0438\u0442\u0430\u044e\u0442, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &lt;, \u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0438\u043c\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445:<\/p>\n<ul>\n<li>A &lt; B<\/li>\n<li>B &lt; A<\/li>\n<\/ul>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u043e \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438:<\/p>\n<ul>\n<li>A &lt; B<\/li>\n<li>B &gt; A<\/li>\n<\/ul>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0437\u0434\u0435\u0441\u044c \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u043d\u0435 \u043f\u043e\u043d\u044f\u043b\u0438, \u043e \u0447\u0451\u043c \u0438\u0434\u0451\u0442 \u0440\u0435\u0447\u044c, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c, \u0438 \u0432\u0441\u0451 \u043f\u0440\u043e\u044f\u0441\u043d\u0438\u0442\u0441\u044f.  <\/p>\n<pre><code class=\"cpp\">string _server; .... bool operator&lt;( const ServerAndQuery&amp; other ) const {   if ( ! _orderObject.isEmpty() )     return _orderObject.woCompare( other._orderObject ) &lt; 0;    if ( _server &lt; other._server )     return true;   if ( other._server &gt; _server )     return false;   return _extra.woCompare( other._extra ) &lt; 0; }<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>MongoDB<\/b> (\u0421++): <a href=\"http:\/\/www.viva64.com\/ru\/w\/V581\/\">V581<\/a> The conditional expressions of the &#8216;if&#8217; operators situated alongside each other are identical. Check lines: 44, 46. parallel.h 46<\/p>\n<p>  \u042d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">if ( other._server &gt; _server )<\/code><\/pre>\n<p>  \u0412\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043b\u043e\u0436\u043d\u044b\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u0434\u0432\u0443\u043c\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430\u043c\u0438 \u0432\u044b\u0448\u0435. \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u0434\u0430:  <\/p>\n<pre><code class=\"cpp\">if ( _server &lt; other._server )   return true; if ( other._server &lt; _server )   return false;<\/code><\/pre>\n<p>  \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0438 \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Chromium<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">enum ContentSettingsType; struct EntryMapKey {   ContentSettingsType content_type;   ... };  bool OriginIdentifierValueMap::EntryMapKey::operator&lt;(     const OriginIdentifierValueMap::EntryMapKey&amp; other) const {   if (content_type &lt; other.content_type)     return true;   else if (other.content_type &gt; content_type)     return false;   return (resource_identifier &lt; other.resource_identifier); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V517\/\">V517<\/a> The use of &#8216;if (A) {&#8230;} else if (A) {&#8230;}&#8217; pattern was detected. There is a probability of logical error presence. Check lines: 61, 63. browser content_settings_origin_identifier_value_map.cc 61<\/p>\n<p>  \u042f \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C++, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c C#. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 \u043a\u043e\u0434\u0435 <b>IronPython and IronRuby<\/b> (C#).  <\/p>\n<pre><code class=\"cpp\">public static int Compare(SourceLocation left,                           SourceLocation right) {   if (left &lt; right) return -1;   if (right &gt; left) return 1;   return 0; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio (C#): <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3021\/\">V3021<\/a> There are two &#8216;if&#8217; statements with identical conditional expressions. The first &#8216;if&#8217; statement contains method return. This means that the second &#8216;if&#8217; statement is senseless. SourceLocation.cs 156<\/p>\n<p>  \u0414\u0443\u043c\u0430\u044e, \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u0438\u0437\u043b\u0438\u0448\u043d\u0435.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u0414\u043b\u044f C# \u0437\u0434\u0435\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0448\u0438\u0431\u043a\u0438, \u0430 \u0434\u043b\u044f C++ \u0438\u0445 \u0431\u044b\u043b\u043e 2. \u0418 \u0432\u043e\u043e\u0431\u0449\u0435, \u043e\u0448\u0438\u0431\u043e\u043a \u0434\u043b\u044f C# \u043a\u043e\u0434\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0434\u043b\u044f C\/C++. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0441\u043f\u0435\u0448\u0438\u0442\u044c \u0441 \u0432\u044b\u0432\u043e\u0434\u043e\u043c, \u0447\u0442\u043e C# \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c C# \u043a\u043e\u0434 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0438 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 C#, \u0447\u0435\u043c \u043d\u0430 \u0421 \u0438 C++.<\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: \u0447\u043b\u0435\u043d \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c \u0441 \u0441\u043e\u0431\u043e\u0439<\/h3>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\/\u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0442\u044f\u0433\u043e\u0442\u0435\u0435\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c, \u043a\u043e\u0433\u0434\u0430 \u0447\u043b\u0435\u043d \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c \u0441 \u0441\u043e\u0431\u043e\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u0434\u0432\u0438\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u043f\u0438\u0448\u0443\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">return m_x == foo.m_x &amp;&amp;        m_y == m_y &amp;&amp;            \/\/ &lt;=        m_z == foo.m_z; \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u0438\u0448\u0443\u0442 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435 \u0438\u043c\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430: return zzz.m_x == foo.m_x &amp;&amp;        zzz.m_y == zzz.m_y &amp;&amp;    \/\/ &lt;=        zzz.m_z == foo.m_z;<\/code><\/pre>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u041a\u0441\u0442\u0430\u0442\u0438, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0438\u0437 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430: \u043f\u0440\u0438\u0432\u0435\u0442 \u00ab\u044d\u0444\u0444\u0435\u043a\u0442\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\u00bb.<\/p>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Unreal Engine 4<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool Compare(const FPooledRenderTargetDesc&amp; rhs, bool bExact) const {   ....   return Extent == rhs.Extent     &amp;&amp; Depth == rhs.Depth     &amp;&amp; bIsArray == rhs.bIsArray     &amp;&amp; ArraySize == rhs.ArraySize     &amp;&amp; NumMips == rhs.NumMips     &amp;&amp; NumSamples == rhs.NumSamples     &amp;&amp; Format == rhs.Format     &amp;&amp; LhsFlags == RhsFlags     &amp;&amp; TargetableFlags == rhs.TargetableFlags     &amp;&amp; bForceSeparateTargetAndShaderResource ==          rhs.bForceSeparateTargetAndShaderResource     &amp;&amp; ClearValue == rhs.ClearValue     &amp;&amp; AutoWritable == AutoWritable;           \/\/ &lt;= }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;==&#8217; operator: AutoWritable == AutoWritable rendererinterface.h 180<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Samba<\/b> &copy;:  <\/p>\n<pre><code class=\"cpp\">static int compare_procids(const void *p1, const void *p2) {   const struct server_id *i1 = (struct server_id *)p1;   const struct server_id *i2 = (struct server_id *)p2;    if (i1-&gt;pid &lt; i2-&gt;pid) return -1;   if (i2-&gt;pid &gt; i2-&gt;pid) return 1;   return 0; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;&gt;&#8217; operator: i2-&gt;pid &gt; i2-&gt;pid brlock.c 1901<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>MongoDB<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool operator==(const MemberCfg&amp; r) const {   ....   return _id==r._id &amp;&amp; votes == r.votes &amp;&amp;          h == r.h &amp;&amp; priority == r.priority &amp;&amp;          arbiterOnly == r.arbiterOnly &amp;&amp;          slaveDelay == r.slaveDelay &amp;&amp;          hidden == r.hidden &amp;&amp;          buildIndexes == buildIndexes;        \/\/ &lt;= }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;==&#8217; operator: buildIndexes == buildIndexes rs_config.h 101<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Geant4 Software<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">inline G4bool G4FermiIntegerPartition:: operator==(const G4FermiIntegerPartition&amp; right) {   return (total == right.total &amp;&amp;           enableNull == enableNull &amp;&amp;          \/\/ &lt;=           partition == right.partition); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;==&#8217; operator: enableNull == enableNull G4hadronic_deex_fermi_breakup g4fermiintegerpartition.icc 58<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>LibreOffice<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">class SvgGradientEntry {   ....   bool operator==(const SvgGradientEntry&amp; rCompare) const   {     return (getOffset() == rCompare.getOffset()            &amp;&amp; getColor() == getColor()            \/\/ &lt;=            &amp;&amp; getOpacity() == getOpacity());      \/\/ &lt;=   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;==&#8217; operator: getColor() == getColor() svggradientprimitive2d.hxx 61<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Chromium<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool FileIOTest::MatchesResult(const TestStep&amp; a,                                const TestStep&amp; b) {   ....   return (a.data_size == a.data_size &amp;&amp;             \/\/ &lt;=           std::equal(a.data, a.data + a.data_size, b.data)); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;==&#8217; operator: a.data_size == a.data_size cdm_file_io_test.cc 367<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>FreeCAD<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool FaceTypedBSpline::isEqual(const TopoDS_Face &amp;faceOne,                                const TopoDS_Face &amp;faceTwo) const {   ....   if (surfaceOne-&gt;IsURational() !=        surfaceTwo-&gt;IsURational())     return false;   if (surfaceTwo-&gt;IsVRational() !=         \/\/ &lt;=        surfaceTwo-&gt;IsVRational())           \/\/ &lt;=     return false;   if (surfaceOne-&gt;IsUPeriodic() !=        surfaceTwo-&gt;IsUPeriodic())     return false;   if (surfaceOne-&gt;IsVPeriodic() !=        surfaceTwo-&gt;IsVPeriodic())     return false;   if (surfaceOne-&gt;IsUClosed() !=        surfaceTwo-&gt;IsUClosed())     return false;   if (surfaceOne-&gt;IsVClosed() !=        surfaceTwo-&gt;IsVClosed())     return false;   if (surfaceOne-&gt;UDegree() !=        surfaceTwo-&gt;UDegree())     return false;   if (surfaceOne-&gt;VDegree() !=        surfaceTwo-&gt;VDegree())     return false;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions &#8216;surfaceTwo-&gt;IsVRational()&#8217; to the left and to the right of the &#8216;!=&#8217; operator. modelrefine.cpp 780<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Serious Engine<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">class CTexParams { public:    inline BOOL IsEqual( CTexParams tp) {     return tp_iFilter     == tp.tp_iFilter &amp;&amp;            tp_iAnisotropy == tp_iAnisotropy &amp;&amp;             \/\/ &lt;=            tp_eWrapU      == tp.tp_eWrapU &amp;&amp;            tp_eWrapV      == tp.tp_eWrapV; };   .... };<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;==&#8217; operator: tp_iAnisotropy == tp_iAnisotropy gfx_wrapper.h 180<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Qt<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">inline bool qCompare(QImage const &amp;t1, QImage const &amp;t2, ....) {   ....   if (t1.width() != t2.width() || t2.height() != t2.height()) {   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;!=&#8217; operator: t2.height() != t2.height() qtest_gui.h 101<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>FreeBSD<\/b> &copy;:  <\/p>\n<pre><code class=\"cpp\">static int compare_sh(const void *_a, const void *_b) {   const struct ipfw_sopt_handler *a, *b;    a = (const struct ipfw_sopt_handler *)_a;   b = (const struct ipfw_sopt_handler *)_b;   ....   if ((uintptr_t)a-&gt;handler &lt; (uintptr_t)b-&gt;handler)     return (-1);   else if ((uintptr_t)b-&gt;handler &gt; (uintptr_t)b-&gt;handler) \/\/ &lt;=     return (1);      return (0); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions &#8216;(uintptr_t) b-&gt;handler&#8217; to the left and to the right of the &#8216;&gt;&#8217; operator. ip_fw_sockopt.c 2893<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Mono<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">static bool AreEqual (VisualStyleElement value1,                        VisualStyleElement value2) {   return     value1.ClassName == value1.ClassName &amp;&amp; \/\/ &lt;=     value1.Part == value2.Part &amp;&amp;     value1.State == value2.State; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3001\/\">V3001<\/a> There are identical sub-expressions &#8216;value1.ClassName&#8217; to the left and to the right of the &#8216;==&#8217; operator. ThemeVisualStyles.cs 2141<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Mono<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public int ExactInference (TypeSpec u, TypeSpec v) {   ....   var ac_u = (ArrayContainer) u;   var ac_v = (ArrayContainer) v;   ....   var ga_u = u.TypeArguments;   var ga_v = v.TypeArguments;   ....   if (u.TypeArguments.Length != u.TypeArguments.Length) \/\/ &lt;=     return 0;    .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3001\/\">V3001<\/a> There are identical sub-expressions &#8216;u.TypeArguments.Length&#8217; to the left and to the right of the &#8216;!=&#8217; operator. generic.cs 3135<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>MonoDevelop<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">Accessibility DeclaredAccessibility { get; } bool IsStatic { get; }  private bool MembersMatch(ISymbol member1, ISymbol member2) {   if (member1.Kind != member2.Kind)   {     return false;   }    if (member1.DeclaredAccessibility !=          \/\/ &lt;=1       member1.DeclaredAccessibility             \/\/ &lt;=1    || member1.IsStatic != member1.IsStatic)     \/\/ &lt;=2   {     return false;   }    if (member1.ExplicitInterfaceImplementations().Any() ||         member2.ExplicitInterfaceImplementations().Any())   {     return false;   }    return SignatureComparer     .HaveSameSignatureAndConstraintsAndReturnTypeAndAccessors(        member1, member2, this.IsCaseSensitive); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3001\/\">V3001<\/a> There are identical sub-expressions &#8216;member1.IsStatic&#8217; to the left and to the right of the &#8216;!=&#8217; operator. CSharpBinding AbstractImplementInterfaceService.CodeAction.cs 545<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Haiku<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">int __CORTEX_NAMESPACE__ compareTypeAndID(....) {   int retValue = 0;   ....   if (lJack &amp;&amp; rJack)   {     if (lJack-&gt;m_jackType &lt; lJack-&gt;m_jackType)           \/\/ &lt;=     {       return -1;     }     if (lJack-&gt;m_jackType == lJack-&gt;m_jackType)          \/\/ &lt;=     {       if (lJack-&gt;m_index &lt; rJack-&gt;m_index)       {         return -1;       }       else       {         return 1;       }     }     else if (lJack-&gt;m_jackType &gt; rJack-&gt;m_jackType)     {       retValue = 1;     }   }   return retValue; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;&lt;&#8216; operator: lJack-&gt;m_jackType &lt; lJack-&gt;m_jackType MediaJack.cpp 783<\/p>\n<p>  \u0427\u0443\u0442\u044c \u043d\u0438\u0436\u0435 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u0430. \u041a\u0430\u043a \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0437\u0430\u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c <i>lJack <\/i> \u043d\u0430 <i>rJack<\/i>.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>CryEngine V<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool CompareRotation(const Quat&amp; q1, const Quat&amp; q2, float epsilon) {   return (fabs_tpl(q1.v.x - q2.v.x) &lt;= epsilon)       &amp;&amp; (fabs_tpl(q1.v.y - q2.v.y) &lt;= epsilon)       &amp;&amp; (fabs_tpl(q2.v.z - q2.v.z) &lt;= epsilon)     \/\/ &lt;=       &amp;&amp; (fabs_tpl(q1.w - q2.w) &lt;= epsilon); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;-&#8216; operator: q2.v.z \u2014 q2.v.z entitynode.cpp 93<\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b\/\u043a\u043b\u0430\u0441\u0441\u0430<\/h3>\n<p>  \u0414\u0430\u043d\u043d\u044b\u0439 \u0432\u0438\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 C \u0438 C++ \u0438 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <i>sizeof<\/i>. \u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u043d\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f. \u041f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code class=\"cpp\">T *a = foo1(); T *b = foo2(); x = memcmp(a, b, sizeof(a));<\/code><\/pre>\n<p>  \u0412\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <i>T <\/i> \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f. \u0420\u0430\u0437\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 <a href=\"https:\/\/www.viva64.com\/ru\/t\/0012\/\">\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/a>, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e 4 \u0438\u043b\u0438 8 \u0431\u0430\u0439\u0442. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u0431\u0430\u0439\u0442 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430.<\/p>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u0434\u0430:  <\/p>\n<pre><code class=\"cpp\">x = memcmp(a, b, sizeof(T));<\/code><\/pre>\n<p>  \u0438\u043b\u0438  <\/p>\n<pre><code class=\"cpp\">x = memcmp(a, b, sizeof(*a));<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u0412\u043e \u043a\u0430\u043a \u0442\u0430\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>CryEngine V<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool operator==(const SComputePipelineStateDescription&amp; other) const {   return 0 == memcmp(this, &amp;other, sizeof(this)); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V579\/\">V579<\/a> The memcmp function receives the pointer and its size as arguments. It is possibly a mistake. Inspect the third argument. graphicspipelinestateset.h 58<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Unreal Engine 4<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool FRecastQueryFilter::IsEqual(   const INavigationQueryFilterInterface* Other) const {   \/\/ @NOTE: not type safe, should be changed when   \/\/ another filter type is introduced   return FMemory::Memcmp(this, Other, sizeof(this)) == 0;<\/code><\/pre>\n<p>  }<\/p>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V579\/\">V579<\/a> The Memcmp function receives the pointer and its size as arguments. It is possibly a mistake. Inspect the third argument. pimplrecastnavmesh.cpp 172<\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0438\u0434\u0430 Cmp(A, A)<\/h3>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430\/\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442. \u041f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code class=\"cpp\">x = memcmp(A, A, sizeof(T));<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043e\u0431\u044a\u0435\u043a\u0442 <i>A <\/i> \u0431\u0443\u0434\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0451\u043d \u0441\u0430\u043c \u0441 \u0441\u043e\u0431\u043e\u0439, \u0447\u0442\u043e, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430. <\/p>\n<p>  \u041d\u0430\u0447\u043d\u0451\u043c \u043c\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u0432 \u043a\u043e\u0434\u0435 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 <b>GDB<\/b> &copy;:  <\/p>\n<pre><code class=\"cpp\">static int psymbol_compare (const void *addr1, const void *addr2,                  int length) {   struct partial_symbol *sym1 = (struct partial_symbol *) addr1;   struct partial_symbol *sym2 = (struct partial_symbol *) addr2;    return (memcmp (&amp;sym1-&gt;ginfo.value, &amp;sym1-&gt;ginfo.value,    \/\/ &lt;=                   sizeof (sym1-&gt;ginfo.value)) == 0           &amp;&amp; sym1-&gt;ginfo.language == sym2-&gt;ginfo.language           &amp;&amp; PSYMBOL_DOMAIN (sym1) == PSYMBOL_DOMAIN (sym2)           &amp;&amp; PSYMBOL_CLASS (sym1) == PSYMBOL_CLASS (sym2)           &amp;&amp; sym1-&gt;ginfo.name == sym2-&gt;ginfo.name); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V549\/\">V549<\/a> The first argument of &#8216;memcmp&#8217; function is equal to the second argument. psymtab.c 1580<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>CryEngineSDK<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">inline bool operator != (const SEfResTexture &amp;m) const {   if (stricmp(m_Name.c_str(), m_Name.c_str()) != 0 ||   \/\/ &lt;=       m_TexFlags != m.m_TexFlags ||        m_bUTile != m.m_bUTile ||       m_bVTile != m.m_bVTile ||       m_Filter != m.m_Filter ||       m_Ext != m.m_Ext ||       m_Sampler != m.m_Sampler)     return true;   return false; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V549\/\">V549<\/a> The first argument of &#8216;stricmp&#8217; function is equal to the second argument. ishader.h 2089<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>PascalABC.NET<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">private List&lt;string&gt; enum_consts = new List&lt;string&gt;(); public override bool IsEqual(SymScope ts) {   EnumScope es = ts as EnumScope;   if (es == null) return false;   if (enum_consts.Count != es.enum_consts.Count) return false;   for (int i = 0; i &lt; es.enum_consts.Count; i++)     if (string.Compare(enum_consts[i],                        this.enum_consts[i], true) != 0)       return false;   return true; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3038\/\">V3038<\/a> The &#8216;enum_consts[i]&#8217; argument was passed to &#8216;Compare&#8217; method several times. It is possible that other argument should be passed instead. CodeCompletion SymTable.cs 2206<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u043d\u044e. \u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>Compare<\/i>:  <\/p>\n<pre><code class=\"cpp\">string.Compare(enum_consts[i], this.enum_consts[i], true)<\/code><\/pre>\n<p>  \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <i>enum_consts[i]<\/i> \u0438 <i>this.enum_consts[i]<\/i> \u044d\u0442\u043e \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435. \u041a\u0430\u043a \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c:  <\/p>\n<pre><code class=\"cpp\">string.Compare(es.enum_consts[i], this.enum_consts[i], true)<\/code><\/pre>\n<p>  \u0438\u043b\u0438  <\/p>\n<pre><code class=\"cpp\">string.Compare(enum_consts[i], es.enum_consts[i], true)<\/code><\/pre>\n<p>  <\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 A==B &amp;&amp; A==B<\/h3>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/examples\/V501\/\">\u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0439<\/a> \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043f\u0440\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u0432\u0430\u0436\u0434\u044b. \u041f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code class=\"cpp\">return A == B &amp;&amp;        C == D &amp;&amp;   \/\/ &lt;=        C == D &amp;&amp;   \/\/ &lt;=        E == F;<\/code><\/pre>\n<p>  \u0412 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b 2 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u044b\u0439: \u043e\u0434\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043b\u0438\u0448\u043d\u0435\u0435, \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c. \u0412\u0442\u043e\u0440\u043e\u0439 \u0445\u0443\u0436\u0435: \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043d\u043e \u043e\u043f\u0435\u0447\u0430\u0442\u0430\u043b\u0438\u0441\u044c.<\/p>\n<p>  \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043e\u0434 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u044f \u043d\u0430\u043f\u0443\u0433\u0430\u044e \u0432\u0430\u0441 \u043f\u043e\u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0438 \u043f\u043e\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0442\u0430\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0434\u0430\u0436\u0435 \u0432 \u043a\u043e\u0434\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 <b>GCC<\/b> &copy;:  <\/p>\n<pre><code class=\"cpp\">static bool dw_val_equal_p (dw_val_node *a, dw_val_node *b) {   ....   case dw_val_class_vms_delta:     return (!strcmp (a-&gt;v.val_vms_delta.lbl1,                      b-&gt;v.val_vms_delta.lbl1)             &amp;&amp; !strcmp (a-&gt;v.val_vms_delta.lbl1,                         b-&gt;v.val_vms_delta.lbl1));   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions &#8216;!strcmp(a-&gt;v.val_vms_delta.lbl1, b-&gt;v.val_vms_delta.lbl1)&#8217; to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. dwarf2out.c 1428<\/p>\n<p>  \u0414\u0432\u0430 \u0440\u0430\u0437\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <i>strcmp <\/i> \u0441 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Unreal Engine 4<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">FORCEINLINE bool operator==(const FShapedGlyphEntryKey&amp; Other) const {   return FontFace == Other.FontFace      &amp;&amp; GlyphIndex == Other.GlyphIndex   \/\/ &lt;=     &amp;&amp; FontSize == Other.FontSize     &amp;&amp; FontScale == Other.FontScale     &amp;&amp; GlyphIndex == Other.GlyphIndex;  \/\/ &lt;= }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions &#8216;GlyphIndex == Other.GlyphIndex&#8217; to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. fontcache.h 139<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Serious Engine<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">inline BOOL CValuesForPrimitive::operator==(....) {   return (  (....) &amp;&amp;  (vfp_ptPrimitiveType == vfpToCompare.vfp_ptPrimitiveType) &amp;&amp;  ....  (vfp_ptPrimitiveType == vfpToCompare.vfp_ptPrimitiveType) &amp;&amp;  .... );<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions &#8216;(vfp_ptPrimitiveType == vfpToCompare.vfp_ptPrimitiveType)&#8217; to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. worldeditor.h 580<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Oracle VM Virtual Box<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">typedef struct SCMDIFFSTATE {   ....   bool  fIgnoreTrailingWhite;   bool  fIgnoreLeadingWhite;   .... } SCMDIFFSTATE; \/* Pointer to a diff state. *\/  typedef SCMDIFFSTATE *PSCMDIFFSTATE;  \/* Compare two lines *\/ DECLINLINE(bool) scmDiffCompare(PSCMDIFFSTATE pState, ....) {   ....   if (pState-&gt;fIgnoreTrailingWhite    \/\/ &lt;=    || pState-&gt;fIgnoreTrailingWhite)   \/\/ &lt;=     return scmDiffCompareSlow(....);   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V501\/\">V501<\/a> There are identical sub-expressions &#8216;pState-&gt;fIgnoreTrailingWhite&#8217; to the left and to the right of the &#8216;||&#8217; operator. scmdiff.cpp 238<\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f memcmp<\/h3>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <i>memcmp<\/i> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 <i>int<\/i>:<\/p>\n<ul>\n<li>&lt; 0 \u2014 buf1 less than buf2;<\/li>\n<li>0 \u2014 buf1 identical to buf2;<\/li>\n<li>&gt; 0 \u2014 buf1 greater than buf2;<\/li>\n<\/ul>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u00ab\u0411\u043e\u043b\u044c\u0448\u0435 0\u00bb \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043b\u044e\u0431\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0430 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 1. \u042d\u0442\u0438\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c: 2, 3, 100, 256, 1024, 5555, 65536 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0438\u043f\u0430 <i>char <\/i> \u0438\u043b\u0438 <i>short<\/i>. \u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d\u044b \u0437\u043d\u0430\u0447\u0430\u0449\u0438\u0435 \u0431\u0438\u0442\u044b, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044e \u043b\u043e\u0433\u0438\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438 1 \u0438\u043b\u0438 -1. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e:  <\/p>\n<pre><code class=\"cpp\">if (memcmp(a, b, sizeof(T)) == 1) if (memcmp(x, y, sizeof(T)) == -1)<\/code><\/pre>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f:  <\/p>\n<pre><code class=\"cpp\">if (memcmp(a, b, sizeof(T)) &gt; 0) if (memcmp(a, b, sizeof(T)) &lt; 0)<\/code><\/pre>\n<p>  \u041a\u043e\u0432\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0431\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0438\u043b\u0438 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>ReactOS<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">HRESULT WINAPI CRecycleBin::CompareIDs(....) {   ....   return MAKE_HRESULT(SEVERITY_SUCCESS, 0,    (unsigned short)memcmp(pidl1-&gt;mkid.abID,                           pidl2-&gt;mkid.abID,                           pidl1-&gt;mkid.cb)); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V642\/\">V642<\/a> Saving the &#8216;memcmp&#8217; function result inside the &#8216;unsigned short&#8217; type variable is inappropriate. The significant bits could be lost breaking the program&#8217;s logic. recyclebin.cpp 542<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Firebird<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">SSHORT TextType::compare(ULONG len1, const UCHAR* str1,                          ULONG len2, const UCHAR* str2) {   ....   SSHORT cmp = memcmp(str1, str2, MIN(len1, len2));    if (cmp == 0)     cmp = (len1 &lt; len2 ? -1 : (len1 &gt; len2 ? 1 : 0));   return cmp; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V642\/\">V642<\/a> Saving the &#8216;memcmp&#8217; function result inside the &#8216;short&#8217; type variable is inappropriate. The significant bits could be lost breaking the program&#8217;s logic. texttype.cpp 338<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>CoreCLR<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool operator( )(const GUID&amp; _Key1, const GUID&amp; _Key2) const   { return memcmp(&amp;_Key1, &amp;_Key2, sizeof(GUID)) == -1; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V698\/\">V698<\/a> Expression &#8216;memcmp(&#8230;.) == -1&#8217; is incorrect. This function can return not only the value &#8216;-1&#8217;, but any negative value. Consider using &#8216;memcmp(&#8230;.) &lt; 0&#8217; instead. sos util.cpp 142<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>OpenToonz<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool TFilePath::operator&lt;(const TFilePath &amp;fp) const {   ....   char differ;   differ = _wcsicmp(iName.c_str(), jName.c_str());   if (differ != 0)     return differ &lt; 0 ? true : false;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V642\/\">V642<\/a> Saving the &#8216;_wcsicmp&#8217; function result inside the &#8216;char&#8217; type variable is inappropriate. The significant bits could be lost, breaking the program&#8217;s logic. tfilepath.cpp 328<\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a<\/h3>\n<p>  \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u043d\u0435\u043d \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C#. \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <i>as<\/i>. \u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 <i>null <\/i> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043d\u043e\u0432\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430, \u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code class=\"cpp\">ChildT foo = obj as ChildT; if (obj == null)   return false; if (foo.zzz()) {}<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <i>if (obj == null)<\/i> \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>obj <\/i> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u044f, \u0435\u0441\u043b\u0438 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <i>as<\/i> \u0432\u0435\u0440\u043d\u0451\u0442 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">ChildT foo = obj as ChildT; if (foo == null)   return false; if (foo.zzz()) {}<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421 \u0438 C++, \u043d\u043e \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u0432 \u0431\u0430\u0437\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0430\u043c\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>MonoDevelop<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public override bool Equals (object o) {   SolutionItemReference sr = o as SolutionItemReference;   if (o == null)     return false;   return (path == sr.path) &amp;&amp; (id == sr.id); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3019\/\">V3019<\/a> Possibly an incorrect variable is compared to null after type conversion using &#8216;as&#8217; keyword. Check variables &#8216;o&#8217;, &#8216;sr&#8217;. MonoDevelop.Core SolutionItemReference.cs 81<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>CoreFX<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public override bool Equals(object comparand) {   CredentialHostKey comparedCredentialKey =                                   comparand as CredentialHostKey;    if (comparand == null)   {     \/\/ This covers also the compared == null case     return false;   }    bool equals = string.Equals(AuthenticationType,         comparedCredentialKey.AuthenticationType, ....   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3019\/\">V3019<\/a> Possibly an incorrect variable is compared to null after type conversion using &#8216;as&#8217; keyword. Check variables &#8216;comparand&#8217;, &#8216;comparedCredentialKey&#8217;. CredentialCache.cs 4007<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Roslyn<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public override bool Equals(object obj) {   var d = obj as DiagnosticDescription;    if (obj == null)     return false;        if (!_code.Equals(d._code))     return false;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3019\/\">V3019<\/a> Possibly an incorrect variable is compared to null after type conversion using &#8216;as&#8217; keyword. Check variables &#8216;obj&#8217;, &#8216;d&#8217;. DiagnosticDescription.cs 201<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Roslyn<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">protected override bool AreEqual(object other) {   var otherResourceString = other as LocalizableResourceString;   return     other != null &amp;&amp;     _nameOfLocalizableResource ==        otherResourceString._nameOfLocalizableResource &amp;&amp;     _resourceManager == otherResourceString._resourceManager &amp;&amp;     _resourceSource == otherResourceString._resourceSource &amp;&amp;     .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3019\/\">V3019<\/a> Possibly an incorrect variable is compared to null after type conversion using &#8216;as&#8217; keyword. Check variables &#8216;other&#8217;, &#8216;otherResourceString&#8217;. LocalizableResourceString.cs 121<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>MSBuild<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public override bool Equals(object obj) {    AssemblyNameExtension name = obj as AssemblyNameExtension;    if (obj == null)  \/\/ &lt;=    {      return false;    }    .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3019\/\">V3019<\/a> Possibly an incorrect variable is compared to null after type conversion using &#8216;as&#8217; keyword. Check variables &#8216;obj&#8217;, &#8216;name&#8217;. AssemblyRemapping.cs 64<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Mono<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public override bool Equals (object o) {   UrlMembershipCondition umc = (o as UrlMembershipCondition);   if (o == null)                                      \/\/ &lt;=     return false;    ....    return (String.Compare (u, 0, umc.Url, ....) == 0); \/\/ &lt;= }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3019\/\">V3019<\/a> Possibly an incorrect variable is compared to null after type conversion using &#8216;as&#8217; keyword. Check variables &#8216;o&#8217;, &#8216;umc&#8217;. UrlMembershipCondition.cs 111<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Media Portal 2<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public override bool Equals(object obj) {   EpisodeInfo other = obj as EpisodeInfo;   if (obj == null) return false;   if (TvdbId &gt; 0 &amp;&amp; other.TvdbId &gt; 0)     return TvdbId == other.TvdbId;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3019\/\">V3019<\/a> Possibly an incorrect variable is compared to null after type conversion using &#8216;as&#8217; keyword. Check variables &#8216;obj&#8217;, &#8216;other&#8217;. EpisodeInfo.cs 560<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>NASA World Wind<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public int CompareTo(object obj) {   RenderableObject robj = obj as RenderableObject;   if(obj == null)                                 \/\/ &lt;=     return 1;   return this.m_renderPriority.CompareTo(robj.RenderPriority); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3019\/\">V3019<\/a> Possibly an incorrect variable is compared to null after type conversion using &#8216;as&#8217; keyword. Check variables &#8216;obj&#8217;, &#8216;robj&#8217;. RenderableObject.cs 199<\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: \u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0446\u0438\u043a\u043b\u044b<\/h3>\n<p>  \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u0438\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0446\u0438\u043a\u043b\u043e\u0432. \u0415\u0441\u043b\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0438 \u0431\u044b\u0432\u0430\u0435\u0442 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0442\u043e \u0441 \u0446\u0438\u043a\u043b\u0430\u043c\u0438 \u043b\u0435\u0433\u043a\u043e \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u043f\u0443\u0442\u0430\u0442\u044c. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Trans-Proteomic Pipeline<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool Peptide::operator==(Peptide&amp; p) {   ....   for (i = 0, j = 0;        i &lt; this-&gt;stripped.length(), j &lt; p.stripped.length();        i++, j++) {    .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V521\/\">V521<\/a> Such expressions using the &#8216;,&#8217; operator are dangerous. Make sure the expression is correct. tpplib peptide.cpp 191<\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0437\u0430\u043f\u044f\u0442\u0430\u044f. \u041a\u043e\u0434 \u044f\u0432\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u0435\u043d, \u0442\u0430\u043a \u043a\u0430\u043a \u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0441\u043b\u0435\u0432\u0430 \u043e\u0442 \u0437\u0430\u043f\u044f\u0442\u043e\u0439, \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u043e \u0435\u0441\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f, \u043d\u043e \u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Qt<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool equals( class1* val1, class2* val2 ) const {   ...   size_t size = val1-&gt;size();   ...   while ( --size &gt;= 0 ){     if ( !comp(*itr1,*itr2) )       return false;     itr1++;     itr2++;   }   ... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V547\/\">V547<\/a> Expression &#8216;&#8212; size &gt;= 0&#8217; is always true. Unsigned type value is always &gt;= 0. QtCLucene arrays.h 154<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>CLucene<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">class Arrays {   ....    bool equals( class1* val1, class2* val2 ) const{      static _comparator comp;      if ( val1 == val2 )        return true;      size_t size = val1-&gt;size();      if ( size != val2-&gt;size() )        return false;      _itr1 itr1 = val1-&gt;begin();      _itr2 itr2 = val2-&gt;begin();      while ( --size &gt;= 0 ){        if ( !comp(*itr1,*itr2) )          return false;        itr1++;        itr2++;      }    return true;   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V547\/\">V547<\/a> Expression &#8216;&#8212; size &gt;= 0&#8217; is always true. Unsigned type value is always &gt;= 0. arrays.h 154<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Mono<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public override bool Equals (object obj) {   ....   for (int i=0; i &lt; list.Count; i++) {     bool found = false;     for (int j=0; i &lt; ps.list.Count; j++) {     \/\/ &lt;=       if (list [i].Equals (ps.list [j])) {         found = true;         break;       }     }     if (!found)       return false;   }   return true;  }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3015\/\">V3015<\/a> It is likely that a wrong variable is being compared inside the &#8216;for&#8217; operator. Consider reviewing &#8216;i&#8217; corlib-net_4_x PermissionSet.cs 607<\/p>\n<p>  \u041f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430, \u0438, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>j<\/i>, \u0430 \u043d\u0435 <i>i<\/i>:  <\/p>\n<pre><code class=\"cpp\">for (int j=0; j &lt; ps.list.Count; j++)<\/code><\/pre>\n<p>  <\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: A = getA(), B = GetA()<\/h3>\n<p>  \u0427\u0430\u0441\u0442\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430:  <\/p>\n<pre><code class=\"cpp\">if (GetA().x == GetB().x &amp;&amp; GetA().y == GetB().y)<\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0438\u043b\u0438 \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435:  <\/p>\n<pre><code class=\"cpp\">Type A = GetA(); Type B = GetB(); if (A.x == B.x &amp;&amp; A.y == B.y)<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c:  <\/p>\n<pre><code class=\"cpp\">Type A = GetA(); Type B = GetA();<\/code><\/pre>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0442\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0432 \u043a\u043e\u0434\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>LibreOffice<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool CmpAttr(   const SfxPoolItem&amp; rItem1, const SfxPoolItem&amp; rItem2) {   ....   bool bNumOffsetEqual = false;   ::boost::optional&lt;sal_uInt16&gt; oNumOffset1 =         static_cast&lt;const SwFmtPageDesc&amp;&gt;(rItem1).GetNumOffset();   ::boost::optional&lt;sal_uInt16&gt; oNumOffset2 =         static_cast&lt;const SwFmtPageDesc&amp;&gt;(rItem1).GetNumOffset();    if (!oNumOffset1 &amp;&amp; !oNumOffset2)   {     bNumOffsetEqual = true;   }   else if (oNumOffset1 &amp;&amp; oNumOffset2)   {     bNumOffsetEqual = oNumOffset1.get() == oNumOffset2.get();   }   else   {     bNumOffsetEqual = false;   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V656\/\">V656<\/a> Variables &#8216;oNumOffset1&#8217;, &#8216;oNumOffset2&#8217; are initialized through the call to the same function. It&#8217;s probably an error or un-optimized code. Check lines: 68, 69. findattr.cxx 69<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Qt<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">AtomicComparator::ComparisonResult IntegerComparator::compare(const Item &amp;o1,                            const AtomicComparator::Operator,                            const Item &amp;o2) const {   const Numeric *const num1 = o1.as&lt;Numeric&gt;();   const Numeric *const num2 = o1.as&lt;Numeric&gt;();     if(num1-&gt;isSigned() || num2-&gt;isSigned())   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V656\/\">V656<\/a> Variables &#8216;num1&#8217;, &#8216;num2&#8217; are initialized through the call to the same function. It&#8217;s probably an error or un-optimized code. Consider inspecting the &#8216;o1.as &lt; Numeric &gt; ()&#8217; expression. Check lines: 220, 221. qatomiccomparators.cpp 221<\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430<\/h3>\n<p>  \u041e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f\u043c\u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e Copy-Paste. \u041e\u043d\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u043f\u043e\u0434 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d, \u0438 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0438\u0445 \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u0445. \u041e\u0434\u043d\u0430\u043a\u043e, \u0443 \u043c\u0435\u043d\u044f \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0448\u0438\u0431\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430, \u043d\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0435 \u0437\u043d\u0430\u044e, \u043a\u0430\u043a \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u043b \u044d\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0437\u0434\u0435\u0441\u044c.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>CoreCLR<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">int __cdecl Compiler::RefCntCmp(const void* op1, const void* op2) {   ....   if (weight1)   {     ....     if (varTypeIsGC(dsc1-&gt;TypeGet()))     {       weight1 += BB_UNITY_WEIGHT \/ 2;     }     if (dsc1-&gt;lvRegister)     {       weight1 += BB_UNITY_WEIGHT \/ 2;     }   }    if (weight1)   {     ....     if (varTypeIsGC(dsc2-&gt;TypeGet()))     {       weight1 += BB_UNITY_WEIGHT \/ 2;       \/\/ &lt;=     }     if (dsc2-&gt;lvRegister)     {       weight2 += BB_UNITY_WEIGHT \/ 2;     }   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V778\/\">V778<\/a> Two similar code fragments were found. Perhaps, this is a typo and &#8216;weight2&#8217; variable should be used instead of &#8216;weight1&#8217;. clrjit lclvars.cpp 2702<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0434\u043b\u0438\u043d\u043d\u0430\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0430 \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u044c\u0438. \u0415\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0431\u044b\u043b\u0430 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u043d\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0437\u0430\u0431\u044b\u043b \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <i>weight1<\/i> \u043d\u0430 <i>weight2<\/i>.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>WPF samples by Microsoft<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public int Compare(GlyphRun a, GlyphRun b) {   ....   if (aPoint.Y &gt; bPoint.Y)      \/\/ &lt;=   {     return -1;   }   else if (aPoint.Y &gt; bPoint.Y) \/\/ &lt;=   {     result = 1;   }   else if (aPoint.X &lt; bPoint.X)   {     result = -1;   }   else if (aPoint.X &gt; bPoint.X)   {     result = 1;   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3003\/\">V3003<\/a> The use of &#8216;if (A) {&#8230;} else if (A) {&#8230;}&#8217; pattern was detected. There is a probability of logical error presence. Check lines: 418, 422. txtserializerwriter.cs 418<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>PascalABC.NET<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public void CompareInternal(....) {   ....   else if (left is int64_const)     CompareInternal(left as int64_const, right as int64_const);   ....   else if (left is int64_const)     CompareInternal(left as int64_const, right as int64_const);     .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3003\/\">V3003<\/a> The use of &#8216;if (A) {&#8230;} else if (A) {&#8230;}&#8217; pattern was detected. There is a probability of logical error presence. Check lines: 597, 631. ParserTools SyntaxTreeComparer.cs 597<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>SharpDevelop<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public int Compare(SharpTreeNode x, SharpTreeNode y) {   ....   if (typeNameComparison == 0) {     if (x.Text.ToString().Length &lt; y.Text.ToString().Length)       return -1;     if (x.Text.ToString().Length &lt; y.Text.ToString().Length)       return 1;   }     .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3021\/\">V3021<\/a> There are two &#8216;if&#8217; statements with identical conditional expressions. The first &#8216;if&#8217; statement contains method return. This means that the second &#8216;if&#8217; statement is senseless NamespaceTreeNode.cs 87<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Coin3D<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">int SbProfilingData::operator == (const SbProfilingData &amp; rhs) const {   if (this-&gt;actionType != rhs.actionType) return FALSE;   if (this-&gt;actionStartTime != rhs.actionStopTime) return FALSE;   if (this-&gt;actionStartTime != rhs.actionStopTime) return FALSE;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V649\/\">V649<\/a> There are two &#8216;if&#8217; statements with identical conditional expressions. The first &#8216;if&#8217; statement contains function return. This means that the second &#8216;if&#8217; statement is senseless. Check lines: 1205, 1206. sbprofilingdata.cpp 1206<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Spring<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool operator &lt; (const aiFloatKey&amp; o) const   {return mTime &lt; o.mTime;} bool operator &gt; (const aiFloatKey&amp; o) const   {return mTime &lt; o.mTime;}<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V524\/\">V524<\/a> It is odd that the body of &#8216;&gt;&#8217; function is fully equivalent to the body of &#8216;&lt;&#8216; function. assimp 3dshelper.h 470<\/p>\n<p>  \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 PVS-Studio \u043d\u0430\u0448\u0451\u043b \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <b>MySQL<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">static int rr_cmp(uchar *a,uchar *b) {   if (a[0] != b[0])     return (int) a[0] - (int) b[0];   if (a[1] != b[1])     return (int) a[1] - (int) b[1];   if (a[2] != b[2])     return (int) a[2] - (int) b[2];   if (a[3] != b[3])     return (int) a[3] - (int) b[3];   if (a[4] != b[4])     return (int) a[4] - (int) b[4];   if (a[5] != b[5])     return (int) a[1] - (int) b[5]; \/\/ &lt;=   if (a[6] != b[6])     return (int) a[6] - (int) b[6];   return (int) a[7] - (int) b[7]; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V525\/\">V525<\/a> The code containing the collection of similar blocks. Check items &#8216;0&#8217;, &#8216;1&#8217;, &#8216;2&#8217;, &#8216;3&#8217;, &#8216;4&#8217;, &#8216;1&#8217;, &#8216;6&#8217; in lines 680, 682, 684, 689, 691, 693, 695. sql records.cc 680<\/p>\n<p>  \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0435\u0440\u0432\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u0442\u043e\u043c \u0432\u0442\u043e\u0440\u043e\u0435 \u0438 \u0435\u043c\u0443 \u0441\u0442\u0430\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 \u0431\u043b\u043e\u043a \u0442\u0435\u043a\u0441\u0442\u0430:  <\/p>\n<pre><code class=\"cpp\">if (a[1] != b[1])   return (int) a[1] - (int) b[1];<\/code><\/pre>\n<p>  \u0418 \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u0435\u0433\u043e \u0432 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0443\u0436\u043d\u043e\u0435 \u0435\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437. \u0417\u0430\u0442\u0435\u043c \u043e\u043d \u043c\u0435\u043d\u044f\u043b \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u043d\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043e\u0448\u0438\u0431\u0441\u044f, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">if (a[5] != b[5])   return (int) a[1] - (int) b[5];<\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u042f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0430\u044e \u043e\u0431 \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435 \u0432 \u043c\u0438\u043d\u0438-\u043a\u043d\u0438\u0433\u0435 &quot;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0391\/\">\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0432\u0441\u0435\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e<\/a>&quot; (\u0441\u043c. \u0433\u043b\u0430\u0432\u0443 \u00ab\u041d\u0435 \u0431\u0435\u0440\u0438\u0442\u0435 \u043d\u0430 \u0441\u0435\u0431\u044f \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u00bb).<\/p>\n<h3>\u041f\u0430\u0442\u0442\u0435\u0440\u043d: \u043c\u0435\u0442\u043e\u0434 Equals \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443<\/h3>\n<p>  \u0412 C# \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b <i>Equals <\/i> \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u0435\u0441\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043d\u0443\u043b\u0435\u0432\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>GitExtensions<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public override bool Equals(object obj) {   return GetHashCode() == obj.GetHashCode(); \/\/ &lt;= }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3115\/\">V3115<\/a> Passing &#8216;null&#8217; to &#8216;Equals(object obj)&#8217; method should not result in &#8216;NullReferenceException&#8217;. Git.hub Organization.cs 14<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>PascalABC.NET<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public override bool Equals(object obj) {   var rhs = obj as ServiceReferenceMapFile;   return FileName == rhs.FileName; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3115\/\">V3115<\/a> Passing &#8216;null&#8217; to &#8216;Equals&#8217; method should not result in &#8216;NullReferenceException&#8217;. ICSharpCode.SharpDevelop ServiceReferenceMapFile.cs 31<\/p>\n<h3>\u0420\u0430\u0437\u043d\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<\/h3>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>G3D Content Pak<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">bool Matrix4::operator==(const Matrix4&amp; other) const {   if (memcmp(this, &amp;other, sizeof(Matrix4) == 0)) {     return true;   }   ... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V575\/\">V575<\/a> The &#8216;memcmp&#8217; function processes &#8216;0&#8217; elements. Inspect the &#8216;third&#8217; argument. graphics3D matrix4.cpp 269<\/p>\n<p>  \u041e\u0434\u043d\u0430 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0441\u043a\u043e\u0431\u043a\u0430 \u0441\u0442\u043e\u0438\u0442 \u043d\u0435 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u043c\u0435\u0441\u0442\u0435. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0431\u0430\u0439\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c <i>sizeof(Matrix4) == 0<\/i>. \u0420\u0430\u0437\u043c\u0435\u0440 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 0, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u0435\u043d 0. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f 0 \u0431\u0430\u0439\u0442.<\/p>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442:   <\/p>\n<pre><code class=\"cpp\">if (memcmp(this, &amp;other, sizeof(Matrix4)) == 0) {<\/code><\/pre>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Wolfenstein 3D<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">inline int operator!=( quat_t a, quat_t b ) {   return ( ( a.x != b.x ) || ( a.y != b.y ) ||            ( a.z != b.z ) &amp;&amp; ( a.w != b.w ) ); }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V648\/\">V648<\/a> Priority of the &#8216;&amp;&amp;&#8217; operation is higher than that of the &#8216;||&#8217; operation. math_quaternion.h 167<\/p>\n<p>  \u0412 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u0432\u0438\u0434\u0438\u043c\u043e, \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <i>&amp;&amp; <\/i> \u0432\u043c\u0435\u0441\u0442\u043e <i>||<\/i>.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>FlightGear<\/b> &copy;:  <\/p>\n<pre><code class=\"cpp\">static int tokMatch(struct Token* a, struct Token* b) {   int i, l = a-&gt;strlen;   if(!a || !b) return 0;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V595\/\">V595<\/a> The &#8216;a&#8217; pointer was utilized before it was verified against nullptr. Check lines: 478, 479. codegen.c 478<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 <i>NULL<\/i>, \u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f, \u0445\u043e\u0442\u044f \u043f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <i>0<\/i>.<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>WinMerge<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">int TimeSizeCompare::CompareFiles(int compMethod,                                   const DIFFITEM &amp;di) {   UINT code = DIFFCODE::SAME;   ...   if (di.left.size != di.right.size)   {     code &amp;= ~DIFFCODE::SAME;     code = DIFFCODE::DIFF;   }   ... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V519\/\">V519<\/a> The &#8216;code&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 79, 80. Merge timesizecompare.cpp 80<\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>ReactOS<\/b> (C++):  <\/p>\n<pre><code class=\"cpp\">#define IsEqualGUID(rguid1, rguid2) \\   (!memcmp(&amp;(rguid1), &amp;(rguid2), sizeof(GUID)))  static int ctl2_find_guid(....) {   MSFT_GuidEntry *guidentry;   ...   if (IsEqualGUID(guidentry, guid)) return offset;   ... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V512\/\">V512<\/a> A call of the &#8216;memcmp&#8217; function will lead to underflow of the buffer &#8216;guidentry&#8217;. oleaut32 typelib2.c 320<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f, \u0447\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430.<\/p>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442:  <\/p>\n<pre><code class=\"cpp\">if (IsEqualGUID(*guidentry, guid)) return offset;<\/code><\/pre>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>IronPython and IronRuby<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public static bool Equals(float x, float y) {   if (x == y) {     return !Single.IsNaN(x);   }   return x == y; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3024\/\">V3024<\/a> An odd precise comparison: x == y. Consider using a comparison with defined precision: Math.Abs(A \u2014 B) &lt; Epsilon. FloatOps.cs 1048<\/p>\n<p>  \u041d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0432 \u0447\u0451\u043c \u0442\u0443\u0442 \u0441\u043c\u044b\u0441\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 <i>NaN<\/i>. \u0415\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <i>(x == y)<\/i> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0438 <i>x<\/i>, \u0438 <i>y<\/i> \u043e\u0442\u043b\u0438\u0447\u043d\u044b \u043e\u0442 <i>NaN<\/i>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <i>NaN<\/i> \u043d\u0435 \u0440\u0430\u0432\u0435\u043d \u043d\u0438\u043a\u0430\u043a\u043e\u043c\u0443 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0435\u0431\u0435. \u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 <i>NaN<\/i> \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0438\u0448\u043d\u044f\u044f \u0438 \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0434\u043e:  <\/p>\n<pre><code class=\"cpp\">public static bool Equals(float x, float y) {   return x == y; }<\/code><\/pre>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Mono<\/b> (C#):  <\/p>\n<pre><code class=\"cpp\">public bool Equals (CounterSample other) {   return     rawValue         == other.rawValue         &amp;&amp;     baseValue        == other.counterFrequency &amp;&amp;   \/\/ &lt;=     counterFrequency == other.counterFrequency &amp;&amp;   \/\/ &lt;=     systemFrequency  == other.systemFrequency  &amp;&amp;     timeStamp        == other.timeStamp        &amp;&amp;     timeStamp100nSec == other.timeStamp100nSec &amp;&amp;     counterTimeStamp == other.counterTimeStamp &amp;&amp;     counterType      == other.counterType; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"http:\/\/www.viva64.com\/ru\/w\/V3112\/\">V3112<\/a> An abnormality within similar comparisons. It is possible that a typo is present inside the expression &#8216;baseValue == other.counterFrequency&#8217;. System-net_4_x CounterSample.cs 139<\/p>\n<h2>\u041a\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442?<\/h2>\n<p>  \u041f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044f \u0432\u0441\u0435 \u044d\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u0412\u0435\u0434\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u0443\u044e \u0438 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438:<\/p>\n<ol>\n<li>\u0412\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0437\u0430\u0434\u0430\u0447 \u0432 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/li>\n<li>\u041d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 (\u043f\u043e\u043a\u0430) \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b \u043e\u0442 \u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u043b\u0438 \u0442\u0435, \u0433\u0434\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>memcmp <\/i> \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0438\u043f\u0430 <i>char<\/i>. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u0437\u0451\u0442.<\/li>\n<li>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0439\u043d\u0435 \u0440\u0435\u0434\u043a\u043e \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.<\/li>\n<li>\u0410 \u043a\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e!<\/li>\n<\/ol>\n<p>  <\/p>\n<h2>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438<\/h2>\n<p>  \u042f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b, \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f. \u0410 \u043e\u0442\u0441\u044e\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u043e\u0432.<\/p>\n<p>  \u041d\u0435\u043f\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0438\u0448\u0438\u0442\u0435 \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u044b \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 <i>Equals <\/i> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>  \u0423\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u043c \u0434\u043e \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u0442\u0435\u0441\u0442\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u043e\u043d\u0438 \u043d\u0435 \u0432\u044b\u044f\u0432\u044f\u0442: \u0432\u0435\u0434\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u044b\u2026 \u0427\u0442\u043e \u0436\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0432\u0435\u0441\u044c \u0443\u0436\u0430\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432 \u043d\u0438\u0445 \u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u041e\u0431\u0437\u043e\u0440\u044b \u043a\u043e\u0434\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0435 \u043b\u0438\u0448\u043d\u0438\u043c\u0438.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d\u0438\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u044b\u043c\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430\u043c\u0438. \u042d\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0439. \u0418 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u043b\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 PVS-Studio \u043d\u0430\u0439\u0442\u0438 \u0432 \u043d\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0438. \u042d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e PVS-Studio \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430.<\/p>\n<p>  \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0435 \u043a \u043d\u0430\u043c \u043d\u0430 \u0441\u0430\u0439\u0442 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 <a href=\"https:\/\/www.viva64.com\/ru\/pvs-studio\/\">PVS-Studio<\/a>.<\/p>\n<p>  <a href=\"http:\/\/www.viva64.com\/en\/b\/0509\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8d2\/41b\/5bf\/8d241b5bf34747169141ed7c1997143b.png\" \/><\/div>\n<p><\/a><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Andrey Karpov. <a href=\"http:\/\/www.viva64.com\/en\/b\/0509\/\">The Evil within the Comparison Functions<\/a><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/329090\/\"> https:\/\/habrahabr.ru\/post\/329090\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/aab\/470\/783\/aab470783a9ba1903260167fc424cc73.png\" alt=\"\u0417\u043b\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\"\/><br \/>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043c\u043d\u044f\u0442 \u043c\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab\u042d\u0444\u0444\u0435\u043a\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\u00bb. \u0412 \u043d\u0435\u0439 \u0438\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u043e \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0439 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438: \u043e\u0448\u0438\u0431\u043a\u0430, \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043d\u043e\u0432\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438. \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0442\u044f\u0433\u043e\u0442\u0435\u044e\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0422\u0430\u043a\u043e\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c, \u043e\u0434\u043d\u0430\u043a\u043e, \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043e\u0448\u0438\u0431\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0448\u043e\u043a\u0438\u0440\u0443\u044e\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f. \u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u043e\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438 \u0441\u0442\u0440\u0430\u0448\u043d\u043e.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-286617","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/286617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=286617"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/286617\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=286617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=286617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=286617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}