C Programming - Declarations and Initializations - Discussion
Discussion Forum : Declarations and Initializations - Point Out Correct Statements (Q.No. 6)
6.
1 : | typedef long a; extern int a c; |
2 : | typedef long a; extern a int c; |
3 : | typedef long a; extern a c; |
Answer: Option
Explanation:
typedef long a;
extern int a c; while compiling this statement becomes extern int long c;. This will result in to "Declaration syntax error".
typedef long a;
extern a int c; while compiling this statement becomes extern long int c;. This will result in to "Too many types in declaration error".
typedef long a;
extern a c; while compiling this statement becomes extern long c;. This is a valid c declaration statement. It says variable c is long data type and defined in some other file or module.
So, Option C is the correct answer.
Discussion:
14 comments Page 1 of 2.
V S SASI KUMAR JONNADULA said:
4 years ago
I am confused. Can anyone give a clear explanation?
Jeychandar said:
5 years ago
@All
long is variable and int is also a variable so two variables cannot be assigned that's why 3 is correct.
long is variable and int is also a variable so two variables cannot be assigned that's why 3 is correct.
Husain said:
5 years ago
Can anyone explain how to use these in a program practically?
Anitha Devi said:
6 years ago
@Venkat.
Thank you.
Thank you.
Venkat said:
7 years ago
Above all are does not give any declaration error. so I think option D correct.
#include<stdio.h>
int main()
{
extern long c;
extern int long d;
extern long int t;
printf("%d %d %d\n",c,d,t);
return 0;
}
long int t=9;
int long d=8;
long c;
output(in gcc):user@user:~/c$ ./a.out
0 8 9
#include<stdio.h>
int main()
{
extern long c;
extern int long d;
extern long int t;
printf("%d %d %d\n",c,d,t);
return 0;
}
long int t=9;
int long d=8;
long c;
output(in gcc):user@user:~/c$ ./a.out
0 8 9
AAKANSHA JAIN said:
8 years ago
Please explain this question in detail.
Cheri said:
1 decade ago
It is declaration not definition. Coming to second and first option we have used two data types int, long.
Suraj said:
1 decade ago
Please somebody explain why does it works fine in option no 2 when a is replaced by long manually it works fine what is its problem with 'a'? which would ultimately be replaced by the compiler before running?
Chaitali said:
1 decade ago
Why extern long int c;
Is not allowed?
I have compiled the second option.
Is not allowed?
I have compiled the second option.
Ramy said:
1 decade ago
"long i;" is equivalent to "int long i" ; or "long int i;"
So: typedef long a;
extern int a c;
Is equivalent to extern int int long c; i.e. the problem comes from int int --> two data types in declaration specifiers.
So: typedef long a;
extern int a c;
Is equivalent to extern int int long c; i.e. the problem comes from int int --> two data types in declaration specifiers.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers