خب خطای سینتکسی رو که می دونیم؛ یعنی مثلا یه سمیکولن نذاریم یا بلوک هامون رو نبندیم و از این جور خطاهای نشانه گذاری که ممکنه رخ بده.
این جور خطا ها یعنی خطاهای سینتکسی حین کامپایل، توسط کامپایلر تشخیص داده می شن.
اما خطاهای سمنتیکی، خطاهایی هستن که بعد از کامپایل و گردآوری برنامه ممکنه بوجود بیان. یعنی کد رو درست نوشتیم اما نتیجه ای که می خوایم رو اشتباه تحویل می ده.
مثلا فرض کنیم ما یه متغیر اینطور تعریف کنیم:
int a="Radeon"
درستش اینه که:
int a =7
خب تو این مثال،ما یه متغیر رشته ای رو در قالب یه integer بنام a تعریف کردیم؛ برنامه کار می کنه اما نتیجه مطمئنا اشتباه خواهد بود.
یا مثلا تو تعریف یه آرایه
a= math.tan(12)
همون طور که می بینی، سینتکس درسته و برنامه کامپایل شدنیه اما، سمنتیک اشتباهه؛ چون داخل کمان سینوس باید مضارب عدد پی رو بذاریم. یعنی:
a= math.tan(12*pi)