{"id":1001,"date":"2017-01-24T21:53:02","date_gmt":"2017-01-24T20:53:02","guid":{"rendered":"http:\/\/piatkosia.k4be.pl\/wordpress\/?p=1001"},"modified":"2017-01-24T22:10:44","modified_gmt":"2017-01-24T21:10:44","slug":"mylace-operatory","status":"publish","type":"post","link":"https:\/\/piatkosia.k4be.pl\/wordpress\/2017\/01\/24\/mylace-operatory\/","title":{"rendered":"Myl\u0105ce operatory"},"content":{"rendered":"<p style=\"text-align: justify;\">Tego posta mia\u0142o nie by\u0107. W bardziej zwi\u0119z\u0142ej formie mia\u0142am napisa\u0107 (i napisa\u0142am) zwyk\u0142y komentarz na blogu. Niestety nie da\u0142o rady z tym komentarzem u niego, w takim razie opisz\u0119 tutaj.<\/p>\n<p>Owo zamieszanie wywo\u0142a\u0142o we mnie zdanie:<br \/>\n<!--more--><\/p>\n<pre>Dwuargumentowy operator ?: [w c++] dzia\u0142a bardzo podobnie jak operator ?? w j\u0119zyku C#, ma jednak ograniczenia, kt\u00f3re nie zawsze pozwalaj\u0105 na jego elastyczne zastosowanie.<\/pre>\n<p>Moim zdaniem jedynym podobie\u0144stwem jest to, \u017ce oba na poziomie kompilatora\u00a0s\u0105 rozwijane do jakiego\u015b ifa. \ud83d\ude42<\/p>\n<p>Wcze\u015bniej jednak napisa\u0142:<\/p>\n<pre style=\"text-align: justify;\">Operator ?: przyjmuje trzy argumenty, pierwszy z nich to wyra\u017cenie, kt\u00f3re ma zwraca\u0107 warto\u015b\u0107 logiczn\u0105, na podstawie kt\u00f3rej wybierana jest jedna z dw\u00f3ch pozosta\u0142ych argument\u00f3w. Je\u017celi warto\u015b\u0107 pierwszego wyra\u017cenia b\u0119dzie oznacza\u0142a true, wtedy zostanie zwr\u00f3cony pierwszy argument, w przeciwnym przypadku drugi.<\/pre>\n<p>Czyli&#8230; Okazuje si\u0119, \u017ce operator<strong> ?:<\/strong>\u00a0w c++ dzia\u0142a&#8230; jak operator <strong>?:<\/strong> w c#:) Jak\u017ce mia\u0142o by by\u0107 inaczej.<\/p>\n<pre> a?b:c<\/pre>\n<p>mo\u017cna wszak zapisa\u0107 jako<\/p>\n<pre class=\"brush: csharp; collapse: false\"> if (a) return b;\r\n else return c;<\/pre>\n<p>za\u015b<\/p>\n<pre> a??b<\/pre>\n<p>mo\u017cna zapisa\u0107 jako<\/p>\n<pre class=\"brush: csharp; collapse: false\">if (a!= null) return a;\r\n else return b;<\/pre>\n<p>Jak si\u0119 ma jeden operator do drugiego? Ano tak<\/p>\n<pre class=\"brush: csharp; collapse: false\">int? value = null;\r\nvar x = value.HasValue ? value.Value : default(int?);\r\n<\/pre>\n<p>mo\u017cna zapisa\u0107 inaczej jako<\/p>\n<pre class=\"brush: csharp; collapse: false\">int? value = null;\r\nvar x = value ?? default(int?);\r\n<\/pre>\n<p style=\"text-align: justify;\">Jedyne co, jest ograniczeniem, to \u017ce w przypadku operatora ?? musi by\u0107 co\u015b, co mo\u017ce przyj\u0105\u0107 nulla, za\u015b przy ?: wyra\u017cenie przed wykrzyknikiem musi zwr\u00f3ci\u0107 boola (nie da si\u0119 w locie skonwertowa\u0107 z inta na boola, jak mo\u017ce to mie\u0107 miejsce w c++ z racji silnej typowalno\u015bci)<\/p>\n<p style=\"text-align: justify;\">I to by by\u0142o na tyle. Pozdrawiam raphaala i zach\u0119cam do odwiedzenia <a href=\"http:\/\/rph-blog.pl\/\">http:\/\/rph-blog.pl\/<\/a><\/p>\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">\/\/edit Ok, m\u00f3j b\u0142\u0105d, przeoczy\u0142am o tej dwuargumentowo\u015bci;P<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tego posta mia\u0142o nie by\u0107. W bardziej zwi\u0119z\u0142ej formie mia\u0142am napisa\u0107 (i napisa\u0142am) zwyk\u0142y komentarz na blogu. Niestety nie da\u0142o rady z tym komentarzem u<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/piatkosia.k4be.pl\/wordpress\/2017\/01\/24\/mylace-operatory\/\">Lecim dalej<span class=\"screen-reader-text\">Myl\u0105ce operatory<\/span> <i class=\"fas fa-angle-right\"><\/i><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,83,50,168],"tags":[262,263,91],"class_list":["post-1001","post","type-post","status-publish","format-standard","hentry","category-bez-kategorii","category-c_sharp","category-c","category-edu","tag-c_sharp","tag-cpp","tag-operatory","entry"],"_links":{"self":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/comments?post=1001"}],"version-history":[{"count":7,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1001\/revisions"}],"predecessor-version":[{"id":1008,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1001\/revisions\/1008"}],"wp:attachment":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/media?parent=1001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/categories?post=1001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/tags?post=1001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}