عملگرهای ریاضی
سی شارپ از عملگرهای ریاضی برای انجام محاسبات استفاده میکند. جدول زیر عملگرهای ریاضی سی شارپ را نشان میدهد :
عملگر | دسته | مثال | نتیجه |
+ | Binary | var1 = var2 + var3; | Var1 برابر است با حاصل جمع var2 و var3 |
– | Binary | var1 = var2 – var3; | Var1 برابر است با حاصل تفریق var2 و var3 |
* | Binary | var1 = var2 * var3; | Var1 برابر است با حاصلضرب var2 در var3 |
/ | Binary | var1 = var2 / var3; | Var1 برابر است با حاصل تقسیم var2 بر var3 |
% | Binary | var1 = var2 % var3; | Var1 برابر است با باقیمانده تقسیم var2 و var3 |
+ | Unary | var1 = +var2; | Var1 برابر است با مقدار var2 |
– | Unary | var1 = -var2 | Var1 برابر است با مقدار var2 ضربدر 1- |
مثال بالا در از نوع عددی استفاده شده است. اما استفاده از عملگرهای ریاضی برای نوع رشتهای نتیجه متفاوتی دارد. همچنین در جمع دو کاراکتر کامپایلر معادل عددی آنها را نشان میدهد. اگر از عملگر + برای رشتهها استفاده کنیم دو رشته را با هم ترکیب کرده و به هم میچسباند. دیگر عملگرهای سی شارپ عملگرهای کاهش و افزایش هستند. این عملگرها مقدار 1 را از متغیرها کم یا به آنها اضافه میکنند. از این متغیرها اغلب در حلقهها استفاده میشود :
عملگر | دسته | مثال | نتیجه |
++ | Unary | var1 = ++var2; | ابتدا به var2 یک واحد اضافه می شود و سپس این مقدار در داخل var1 قرار می گیرد. |
– – | Unary | var1 = – -var2; | ابتدا از var2 یک واحد کم می شود و سپس این مقدار در داخل var1 قرار می گیرد. |
++ | Unary | var1 = var2++; | ابتدا مقدار var2 در داخل var1 قرار می گیرد و سپس یک واحد به var2 اضافه می شود. |
— | Unary | var1 = var2–; | ابتدا مقدار var2 در داخل var1 قرار می گیرد و سپس یک واحد از var2 کم می شود. |
به این نکته توجه داشته باشید که محل قرار گیری عملگر در نتیجه محاسبات تأثیر دارد. اگر عملگر قبل از متغیر var2 بیاید افزایش یا کاهش var1 اتفاق می افتد. چنانچه عملگرها بعد از متغیر var2 قرار بگیرند ابتدا var1 برابر var2 میشود و سپس متغیر var2 افزایش یا کاهش مییابد. به مثالهای زیر توجه کنید :
using System; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { int x = 0; int y = 1; x = ++y; Console.WriteLine("x= {0}",x); Console.WriteLine("y= {0}", y); Console.ReadLine(); } } }
x=2 y=2
using System; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { int x = 0; int y = 1; x = --y; Console.WriteLine("x= {0}",x); Console.WriteLine("y= {0}", y); Console.ReadLine(); } } }
x=0 y=0
همانطور که در دو مثال بالا مشاهده میکنید، درج عملگرهای — و ++ قبل از عملوند y باعث میشود که ابتدا یک واحد از y کم و یا یک واحد به y اضافه شود و سپس نتیجه در عملوند x قرار بگیرد. حال به دو مثال زیر توجه کنید :
using System; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { int x = 0; int y = 1; x = y--; Console.WriteLine("x= {0}",x); Console.WriteLine("y= {0}", y); Console.ReadLine(); } } }
x=1 y=0
using System; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { int x = 0; int y = 1; x = y++; Console.WriteLine("x= {0}",x); Console.WriteLine("y= {0}", y); Console.ReadLine(); } } }
x=1 y=2
همانطور که در دو مثال بالا مشاهده میکنید، درج عملگرهای — و ++ بعد از عملوند y باعث میشود که ابتدا مقدار y در داخل متغیر x قرار بگیرد و سپس یک واحد از y کم و یا یک واحد به ان اضافه شود. حال میتوانیم با ایجاد یک برنامه نحوه عملکرد عملگرهای ریاضی در سی شارپ را یاد بگیریم :
1: using System; 2: 3: public class Program 4: { 5: public static void Main() 6: { 7: //Variable declarations 8: int num1, num2; 9: string msg1, msg2; 10: 11: //Assign test values 12: num1 = 5; 13: num2 = 3; 14: 15: //Demonstrate use of mathematical operators 16: Console.WriteLine("The sum of {0} and {1} is {2}.", num1, num2, (num1 + num2)); 17: Console.WriteLine("The difference of {0} and {1} is {2}.", num1, num2, 18: (num1 - num2)); 19: Console.WriteLine("The product of {0} and {1} is {2}.", num1, num2, 20: (num1 * num2)); 21: Console.WriteLine("The quotient of {0} and {1} is {2:F2}.", num1, num2, 22: ((double)num1 / num2)); 23: Console.WriteLine("The remainder of {0} divided by {1} is {2}", num1, num2, 24: (num1 % num2)); 25: 26: //Demonstrate concatenation on strings using the + operator 27: msg1 = "Hello "; 28: msg2 = "World!"; 29: Console.WriteLine(msg1 + msg2); 30: } 31: }
The sum of 5 and 3 is 8. The difference of 5 and 3 is 2. The product of 5 and 3 is 15. The quotient of 5 and 3 is 1.67. The remainder of 5 divided by 3 is 2 Hello World!
برنامه بالا نتیجه هر عبارت را نشان میدهد. در این برنامه از متد Writeline() برای نشان دادن نتایج در سطرهای متفاوت استفاده شده است. در این مثال با یک نکته عجیب مواجه میشویم و آن حاصل تقسیم دو عدد صحیح است. وقتی که دو عدد صحیح را بر هم تقسیم کنیم حاصل باید یک عدد صحیح و فاقد بخش کسری باشد. اما همانطور که مشاهده میکنید اگر فقط یکی از اعداد را به نوع اعشاری double تبدیل کنیم (در مثال میبینید) حاصل به صورت اعشار نشان داده میشود.
برای اینکه ارقام کسری بعد از عدد حاصل دو رقم باشند از {2:F2} استفاده میکنیم. F به معنای تعیین کردن میباشد و در این جا بدین معناست که عدد را تا دو رقم اعشار نمایش بده. چون خطوط کد طولانی هستند آنها را در دو خط مینویسیم. سی شارپ خط جدید و فاصله و فضای خالی را نادیده میگیرد. در خط 29 مشاهده میکنید که دو رشته به وسیله عملگر + به هم متصل شدهاند. نتیجه استفاده از عملگر + برای چسباندن دو کلمه “Hello “ و “!World” رشته “!Hello World” خواهد بود. به فاصلههای خالی بعد از اولین کلمه توجه کنید اگر آنها را حذف کنید از خروجی برنامه نیز حذف میشوند.
ممنون از راهنمایی جامع و کاملتون
ببخشید byte 1200/2 خطایی که میزنه مربوط به حافظه هم میشه؟
بله مربوط به حافظه است…اگه اینطور بنویسین
میگه که مقدار 600 نمی تونه تو یک متغیر از نوع Byte قرار بگیره. چون Byte مقادیر بین 255-0 رو قبول می کنه. پس برای اینکه مجورش کنید به تبدیل باید به صورت زیر عمل کنید
اعداد از نوع بایت، 8 بیت فضا اشغال می کنن ولی اعداد صحیح 32 بیت. در نتیجه نمیشه 32 بیت رو تو 8 بیت جا داد و همین باعث میشه که بخشی از عدد صحیح حذف بشه. شما اگه کد زیر رو اجرا کنید
عدد 88 به جای 600 به شما نمایش داده می شود. چرا این عدد نمایش داده میشه ؟ به کدهای زیر نگاه کنید:
از بیت های بالا همونطور که گفتم 8 رقمش رو میشه تو نوع Byte قرار داد. اونم 8 رقم از سمت راست
ببخشید میشه بگید دلیل ارورش چیه من جواب درستش رو نمیخوام
خواهش می کنم
دلیلش بر می گرده به بیت های تشکیل دهنده یک عدد. مطلب زیر رو بخونید
تبدیل صریح در سی شارپ
و مطلب زیر هم به عنوان مکمل
تبدیل اعداد دسیمال به باینری
ممنون از راهنماییتون