{"id":55000003,"date":"2015-02-01T00:00:00","date_gmt":"2020-12-23T11:03:12","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=3"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Von_VBA_zu_C_Operatoren","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Von_VBA_zu_C_Operatoren\/","title":{"rendered":"Von VBA zu C#: Operatoren"},"content":{"rendered":"<p><b>Die Anzahl der Operatoren unter VBA ist &uuml;berschaubar. Die .NET-Programmiersprachen bieten hier schon eine ganze Menge neuer M&ouml;glichkeiten. Zum Beispiel brauchen Sie, wenn Sie einen Z&auml;hler um eins erh&ouml;hen wollen, nicht mehr x = x + 1 zu schreiben, sondern einfach nur x += 1. Diese und viele andere Operatoren stellt der vorliegende Artikel vor.<\/b><\/p>\n<p><b>Operatoren<\/b><\/p>\n<p>Es gibt verschiedene Arten von Operatoren, die wir in die folgenden Kategorien einteilen:<\/p>\n<ul>\n<li>Zuweisungsoperatoren<\/li>\n<li>Arithmetische Operatoren<\/li>\n<li>Vergleichsoperatoren<\/li>\n<li>Logische Operatoren<\/li>\n<li>Andere Operatoren<\/li>\n<\/ul>\n<p><b>Beispiele<\/b><\/p>\n<p>Wenn Sie die nachfolgend vorgestellten Beispiele ausprobieren m&ouml;chten, erstellen Sie einfach eine C#-Konsolenanwendung. F&uuml;gen Sie die Anweisungen in die Methode <b>static void Main() <\/b>ein und f&uuml;hren Sie diese durch Bet&auml;tigen der Taste <b>F5 <\/b>aus.<\/p>\n<p><b>Zuweisungsoperatoren<\/b><\/p>\n<p>Als Erstes schauen wir uns die Operatoren an, mit denen Sie einer Variablen einen neuen Wert zuweisen k&ouml;nnen:<\/p>\n<ul>\n<li><b>x = y<\/b>: <b>x <\/b>erh&auml;lt den Wert von <b>y<\/b>.<\/li>\n<li><b>x += y<\/b>: <b>y <\/b>wird zu <b>x <\/b>addiert und in <b>x <\/b>gespeichert (entspricht unter VBA dem Ausdruck <b>x = x + y<\/b>)<\/li>\n<li><b>x -= y<\/b>: <b>y <\/b>wird von <b>x <\/b>subtrahiert (<b>x = x &#8211; y<\/b>)<\/li>\n<li><b>x *= y<\/b>: <b>x <\/b>wird mit <b>y <\/b>multipliziert (<b>x = x * y<\/b>)<\/li>\n<li><b>x \/= y<\/b>: <b>x <\/b>wird durch <b>y <\/b>dividiert (<b>x = x \/ y<\/b>)<\/li>\n<li><b>x %= y<\/b>: Liefert den Rest von <b>x\/y <\/b>(<b>x = x mod y<\/b>)<\/li>\n<li><b>x &#038;= y<\/b>: Bitweise AND-Operation (mehr weiter unten &#8211; unter VBA <b>AND<\/b>)<\/li>\n<li><b>x |= y<\/b>: Bitweise OR-Operator (mehr weiter unten &#8211; unter VBA <b>OR<\/b>)<\/li>\n<li><b>x ^= y<\/b>: XOR-Operator (mehr weiter unten)<\/li>\n<li><b>x <<= y<\/b>: Verschiebt <b>x <\/b>um <b>y <\/b>bitweise nach links.<\/li>\n<li><b>x >>= y<\/b>: Verschiebt <b>x <\/b>um <b>y<\/b> bitweise nach rechts.<\/li>\n<li><b>=><\/b>: Lambda-Operator. Darauf gehen wir sp&auml;ter ein.<\/li>\n<\/ul>\n<p><b>Bitweise Vergleichsoperationen<\/b><\/p>\n<p>Die Auflistung oben enthielt einige bitbezogene Operatoren. Diese vergleichen die einzelnen Bits von Zahlenwerten und liefern das entsprechende Ergebnis. Wenn Sie also beispielsweise die Zahl <b>6 <\/b>(bin&auml;r <b>110<\/b>) und <b>2 <\/b>(<b>10<\/b>) vergleichen, erhalten Sie bei der <b>AND<\/b>-Operation den Wert <b>2<\/b> (also <b>10<\/b>), weil nur das zweite Bit bei beiden Zahlenwerten gesetzt ist.<\/p>\n<p>Bei einer <b>OR<\/b>-Operation mit den Zahlen <b>4 <\/b>(<b>100<\/b>) und <b>1 <\/b>(<b>1<\/b>) k&auml;me der Wert <b>5 <\/b>heraus (<b>101<\/b>).<\/p>\n<p>Die <b>XOR<\/b>-Operation liefert nur solche Bits, die sich bei beiden Operatoren unterscheiden. Der Vergleich von <b>7 <\/b>(<b>111<\/b>) und <b>3 <\/b>(<b>11<\/b>) w&uuml;rde also <b>4 <\/b>ergeben (<b>100<\/b>).<\/p>\n<p>Die bitweise Verschiebung mit den Operatoren <b><<= <\/b>und <b>>>= <\/b>sorgt daf&uuml;r, dass die Bits um die angegebene Anzahl nach links oder rechts verschoben werden:<\/p>\n<pre>Console.WriteLine(5 &lt;&lt; 1);\r\n\/\/Liefert: 10<\/pre>\n<p><b>5 <\/b>entspricht bin&auml;r dem Wert <b>101<\/b>. Wenn Sie <b>101 <\/b>um eine Position nach links verschieben, wird der freie Platz rechts mit dem Wert <b>0 <\/b>aufgef&uuml;llt, Sie erhalten also <b>1010<\/b>, was dem dezimalen Wert <b>10 <\/b>entspricht.<\/p>\n<p>Verschieben Sie <b>101 <\/b>hingegen um eins nach rechts, erhalten Sie <b>10 <\/b>&#8211; aus <b>5 <\/b>wird so also <b>2<\/b>:<\/p>\n<pre>Console.WriteLine(5 &gt;&gt; 1);\r\n\/\/Liefert: 2<\/pre>\n<p><b>Arithmetische Operatoren<\/b><\/p>\n<p>Unter den arithmetischen Operatoren verstehen wir die  Grundrechenarten sowie einige weitere. Die Operatoren f&uuml;r Addition (<b>+<\/b>), Subtraktion (<b>&#8211;<\/b>), Multiplikation (<b>*<\/b>) und Division (<b>\/<\/b>) brauchen wir nicht weiter zu erl&auml;utern.<\/p>\n<p>Das Plus- und das Minuszeichen dienen au&szlig;erdem als Vorzeichen.<\/p>\n<p>Daneben gibt es noch das Prozentzeichen (<b>%<\/b>), mit dem Sie den Rest einer Division ermitteln:<\/p>\n<pre>x = 5;\r\ny = 2;\r\nConsole.WriteLine(\"Der Rest von 5\/2 ist: {0}\", y % x);\r\n\/\/Liefert 1<\/pre>\n<p>Beim Dividieren zweier Zahlen vom Datentyp <b>int <\/b>m&uuml;ssen Sie beachten, dass das Ergebnis wieder den gleichen Datentyp hat. Im folgenden Beispiel wird aus <b>5\/2 <\/b>dann <b>2 <\/b>statt des erwarteten Wertes <b>2.5<\/b>:<\/p>\n<pre>int x = 5;\r\nint y = 2;\r\nConsole.WriteLine(\"5\/2 ist: {0}\", y \/ x);\r\n\/\/Liefert 2<\/pre>\n<p>Der Grund ist, dass f&uuml;r das Ergebnis einer Rechenoperation der gr&ouml;&szlig;te Datentyp verwendet wird &#8211; und der ist in diesem Fall <b>int<\/b>. Dementsprechend gibt die Konsole den Wert <b>2 <\/b>statt <b>2.5 <\/b>aus.<\/p>\n<p>Wenn Sie mindestens einen der beiden Werte als Datentyp mit Nachkommastellen deklarieren, erhalten Sie das gew&uuml;nschte Ergebnis:<\/p>\n<pre>int e = 5;\r\ndouble f = 2;\r\nConsole.WriteLine(\"5\/2 ist: {0}\", e\/f);\r\n\/\/Liefert 2.5<\/pre>\n<p>Interessanterweise tritt das gleiche Problem auf, wenn Sie ohne Variablen arbeiten und die Gleichung mit konkreten Zahlenwerten angeben:<\/p>\n<pre>Console.WriteLine(\"5\/2 ist: {0}\", 5 \/ (double)2);\r\n\/\/Liefert 2<\/pre>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000003\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000003?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000003\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"2c6d4a5d32\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Anzahl der Operatoren unter VBA ist &uuml;berschaubar. Die .NET-Programmiersprachen bieten hier schon eine ganze Menge neuer M&ouml;glichkeiten. Zum Beispiel brauchen Sie, wenn Sie einen Z&auml;hler um eins erh&ouml;hen wollen, nicht mehr x = x + 1 zu schreiben, sondern einfach nur x += 1. Diese und viele andere Operatoren stellt der vorliegende Artikel vor.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66012015,662015,44000001,44000026,44000030,44000022],"tags":[],"yst_prominent_words":[66062051,66062047,66062059,66062061],"class_list":["post-55000003","post","type-post","status-publish","format-standard","hentry","category-66012015","category-662015","category-CGrundlagen","category-Outlook_programmieren","category-PowerPoint_programmieren","category-Von_Access_zu_NET"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000003"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000003\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000003"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000003"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000003"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}