I was going through this program that used printf function when I realized that it (printf) could take unlimited number of arguments. Using overloading we can specify different number of values to be passed, but how does overlaoding happen in printf function (as we cannot define it unlimited number of times)?