Answer:
The curly braces denote a block of code, in which variables can be
declared. Variables declared within the block are valid only until
the end of the block, marked by the matching right curly brace ’}’.
The body of a function is one such type of block, and thus, curly
braces are used to describe the extent of that block.
2.Describe
the difference between the literal values 7, "7", and ’7’
?
Answer: The first literal
is integer 7.Second literal is null terminated string value '7'.Third
literal is character '7' having ASCII character code (55).
3.
Consider
the statement double ans = 10.0+2.0/3.0−2.0∗2.0; Rewrite this
statement, inserting parentheses to ensure that ans = 11.0 upon
evaluation of this statement ?
Answer:
double
ans = 10.0+2.0/((3.0−2.0)∗2.0);
4.Consider
the statement double ans = 18.0/squared(2+1); For each of the four
versions of the function macro squared() below, write the
corresponding value of ans.
1.
#define squared(x) x*x
2.
#define squared(x) (x*x)
3.
#define squared(x) (x)*(x)
4.
#define squared(x) ((x)*(x))
Answers:
1.
#define
squared(x)
x*x
18.0/
2+1 * 2+1
18.0/2+2+1
9+2+1
double
ans= 12
2.
#define
squared(x) (x*x)
18.0/
(2+1
* 2+1)
18.0/(2+2+1)
18.0/5
double
ans = 3.6
3.#define
squared(x) (x)*(x)
18.0/
(2+1)
*(2+1)
18.0/3*3
6*3
double
ans = 18
4.#define
squared(x) ((x)*(x))
18.0/
((2+1)
*(2+1))
18.0/(3*3)
18.0/9
double
ans = 2
5.
write
a C program to print “I love C language” and run in gdb explain
the commands used.
Program:
#include<stdio.h>
/*
C Program to print and run using gdb
*
Surendra Patil - 9/15/2013
*/
int
main()
{
printf("I Love C Language");
return 0;
}
Output:
[spatil@localhost
~]$
gcc -g -Wall print_pgm.c
-> enables
gdb on the pgm
[spatil@localhost
~]$ gdb
a.out
->open
the pgm with gdb
GNU
gdb (GDB) Fedora (7.6-30.fc19)
Copyright
(C) 2013 Free Software Foundation, Inc.
License
GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This
is free software: you are free to change and redistribute it.
There
is NO WARRANTY, to the extent permitted by law. Type "show
copying"
and
"show warranty" for details.
This
GDB was configured as "x86_64-redhat-linux-gnu".
For
bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading
symbols from /home/spatil/a.out...done.
(gdb)
run
-> run the program
Starting
program: /home/spatil/a.out
I
Love C Language[Inferior 1 (process 4430) exited normally]
(gdb)
quit
->exit from gdb
6.The
following lines of code, when arranged in the proper sequence, output
the simple
message “All
your base are belong to us.”
1.
return 0;
2.
const char msg[] = MSG1;
3.
}
4.
#define MSG1 "All your base are belong to us!"
5.
int main(void) {
6.
#include <stdio.h>
7.
puts(msg);
Answer:
#include
<stdio.h>
#define
MSG1 "All your base are belong to us!"
int
main(void) {
const
char msg[] = MSG1;
puts(msg);
return
0;
}
7.
For
each of the following statements, explain why it is not correct, and
fix it.
1
. #include <stdio.h>;
2.int
function(void arg1)
{
return
arg1-1;
}
3.
#define
MESSAGE = "Happy new year!"
puts(MESSAGE);
Answers:
1
. #include
<stdio.h>;
-
preprocessor directives should not be terminated with semicolon
correct code is,
#include
<stdio.h>
2.int
function(void arg1)
{
return
arg1-1;
}
- arg1
is void variable which represents empty ,should not return the void
values,correct code is,
int
function(int arg1)
{
return
arg1-1;
}
3.
#define
MESSAGE = "Happy new year!"
puts(MESSAGE);
- Assignment
operator should not be used in MACRO definitions,correct code is,
#define
MESSAGE "Happy new year!"
puts(MESSAGE);
Comments
/ and * have equal precedence. so why can't it be 18.0/9=2