C Programming - Const - Discussion

Discussion :: Const - Point Out Errors (Q.No.2)

2. 

Point out the error in the program (in Turbo-C).

#include<stdio.h>
#define MAX 128

int main()
{
    const int max=128;
    char array[max];
    char string[MAX];
    array[0] = string[0] = 'A';
    printf("%c %c\n", array[0], string[0]);
    return 0;
}

[A]. Error: unknown max in declaration/Constant expression required
[B]. Error: invalid array string
[C]. None of above
[D]. No error. It prints A A

Answer: Option A

Explanation:

Step 1: A macro named MAX is defined with value 128

Step 2: const int max=128; The constant variable max is declared as an integer data type and it is initialized with value 128.

Step 3: char array[max]; This statement reports an error "constant expression required". Because, we cannot use variable to define the size of array.

To avoid this error, we have to declare the size of an array as static. Eg. char array[10]; or use macro char array[MAX];

Note: The above program will print A A as output in Unix platform.


Mustafa said: (Dec 16, 2011)  
In gcc compiler it is running fine, no warnings and errors.

Mms said: (May 16, 2012)  
Can be build in data type as a variable name?

Narendar said: (Jan 27, 2014)  
Yes it works fine in gcc because it is compiler dependent. What I meant to say is data type range.

Siva said: (Feb 26, 2014)  
No friends here they declare the int type as const. Const can't change and he take only the constant variable. So char type need const.

Raj Kumar said: (Aug 3, 2014)  
In above program if we declare.

int max=128;
char array[max];

Without const then it works or not.

Mohammad Mohsin said: (Sep 6, 2015)  
Definitely it will print A.

Dilna Vincent said: (Sep 9, 2015)  
Since we declare max as const int it should work.

Deepthi said: (Nov 16, 2015)  
It works fine no error. It prints A A.

Jaydip said: (Nov 19, 2015)  
On GCC its provides no error, and prints A A.

Amin said: (Jun 20, 2016)  
Yes, option 'D' is correct answer.

Shabanam said: (Sep 25, 2017)  
I am confused please explain it.

Zeel Modi said: (May 10, 2018)  
Option D is correct. I tried to execute it.

Here is my o/p:
A A

--------------------------------.
Process exited after 3.76 seconds with return value 0
Press any key to continue . . .

Avijit Samanta said: (Dec 29, 2018)  
This program will print A A as output in Windows platform without any error.

Post your comments here:

Name *:

Email   : (optional)

» Your comments will be displayed only after manual approval.