declarations and initializations

Which of the following statements should be used to obtain a remainder after dividing 3.14 by 2.1 ?
A   rem = 3.14 % 2.1;   
B   rem = modf(3.14, 2.1);   
C   rem = fmod(3.14, 2.1);   
D   Remainder cannot be obtain in floating point division.   
ANS: C - rem = fmod(3.14, 2.1);

fmod(x,y) - Calculates x modulo y, the remainder of x/y.
This function is the same as the modulus operator. But fmod() performs floating point divisions. Example:

#include <stdio.h>
#include <math.h>

int main ()
  printf ("fmod of 3.14/2.1 is %lf\n", fmod (3.14,2.1) );
  return 0;

What are the types of linkages?
A   Internal and External   
B   External, Internal and None   
C   External and None   
D   Internal   
ANS: B - External, Internal and None

External Linkage-> means global, non-static variables and functions.
Internal Linkage-> means static variables and functions with file scope.
None Linkage-> means Local variables.

Which of the following special symbol allowed in a variable name?
A   * (asterisk)   
B   | (pipeline)   
C   - (hyphen)   
D   _ (underscore)   
ANS: D - _ (underscore)

Variable names in C are made up of letters (upper and lower case) and digits. The underscore character ("_") is also permitted. Names must not begin with a digit. Examples of valid (but not very descriptive) C variable names:
=> foo
=> Bar
=> BAZ
=> foo_bar
=> _foo42
=> _
=> QuUx

Is there any difference between following declarations?
1 : extern int fun();
2 : int fun();
A   Both are identical   
B   No difference, except extern int fun(); is probably in another file   
C   int fun(); is overrided with extern int fun();   
D   None of these   
ANS: B - No difference, except extern int fun(); is probably in another file

extern int fun(); declaration in C is to indicate the existence of a global function and it is defined externally to the current module or in another file. int fun(); declaration in C is to indicate the existence of a function inside the current module or in the same file.

How would you round off a value from 1.66 to 2.0?
A   ceil(1.66)   
B   floor(1.66)   
C   roundup(1.66)   
D   roundto(1.66)   
ANS: A - ceil(1.66)

/* Example for ceil() and floor() functions: */


int main()
    printf("\n Result : %f" , ceil(1.44) );
    printf("\n Result : %f" , ceil(1.66) );
    printf("\n Result : %f" , floor(1.44) );    
    printf("\n Result : %f" , floor(1.66) );

    return 0;
// Output:
// Result : 2.000000
// Result : 2.000000
// Result : 1.000000
// Result : 1.000000

By default a real number is treated as a
A   float   
B   double   
C   long double   
D   far double   
ANS: B - double

In computing, 'real number' often refers to non-complex floating-point numbers. It include both rational numbers, such as 42 and 3/4, and irrational numbers such as pi = 3.14159265... When the accuracy of the floating point number is insufficient, we can use the double to define the number. The double is same as float but with longer precision and takes double space (8 bytes) than float. To extend the precision further we can use long double which occupies 10 bytes of memory space.

Which of the following is not user defined data type?
1 :
struct book
    char name[10];
    float price;
    int pages;
2 :
long int l = 2.35;
3 :
enum day {Sun, Mon, Tue, Wed};
A   1   
C   3   
D   Both 1 and 2   
ANS: B -

C data types classification are

  1. Primary data types
    1. int
    2. char
    3. float
    4. double
    5. void
  2. Secondary data types (or) User-defined data type
    1. Array
    2. Pointer
    3. Structure
    4. Union
    5. Enum
  So, clearly long int l = 2.35; is not User-defined data type.
(i.e.long int l = 2.35; is the answer.)

Is the following statement a declaration or definition?
extern int i;
A   Declaration   
B   Definition   
C   Function   
D   Error   
ANS: A - Declaration

Declaring is the way a programmer tells the compiler to expect a particular type, be it a variable, class/struct/union type, a function type (prototype) or a particular object instance. (ie. extern int i) Declaration never reserves any space for the variable or instance in the program's memory; it simply a "hint" to the compiler that a use of the variable or instance is expected in the program. This hinting is technically called "forward reference".

Identify which of the following are declarations
1 : extern int x;
2 : float square ( float x ) { ... }
3 : double pow(double, double);
A   1   
B   2   
C   1 and 3   
D   3   
ANS: C - 1 and 3

extern int x; - is an external variable declaration.

double pow(double, double); - is a function prototype declaration.

Therefore, 1 and 3 are declarations. 2 is definition.

In the following program where is the variable a getting defined and where it is getting declared?
int main()
    extern int a;
    printf("%d\n", a);
    return 0;
int a=20;
A   extern int a is declaration, int a = 20 is the definition   
B   int a = 20 is declaration, extern int a is the definition   
C   int a = 20 is definition, a is not defined   
D   a is declared, a is not defined   
ANS: A - extern int a is declaration, int a = 20 is the definition

- During declaration we tell the datatype of the Variable. - During definition the value is initialized.

When we mention the prototype of a function?
A   Defining   
B   Declaring   
C   Prototyping   
D   Calling   
ANS: B - Declaring

A function prototype in C or C++ is a declaration of a function that omits the function body but does specify the function's name, argument types and return type. While a function definition specifies what a function does, a function prototype can be thought of as specifying its interface.