שפת C/הקדם מעבד/תרגילים
מראה
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
תחליפים ליכולות נוספות של הקדם מעבד
[עריכה]הסכנה בפקודות מאקרו
[עריכה]מה הבעיה בתוכנית הבאה?
#include <stdio.h>
#define min(a, b) a < b? a : b
int main()
{
int a = 2, b = 3;
printf("%d", min(++a, ++b));
return 0;
}
פתרון
השורה:
printf("%d", min(++a, ++b));
תתורגם לשורה הבאה:
printf("%d", ++a < ++b? ++a : ++b);
ובכך יקודמו המשתנים פעמיים, ותודפס הספרה 4, ולא 3 שניתן היה לצפות לו, שהיה מתקבל לו היה המאקרו min מוחלף בקריאה לפונקציה.