-
Complete the sentence to make it true: When a function is declared in the following way:
int fun(int restrict *v1, int *v2) {....}
- the compiler will check that
v1
and v2
don’t cover the same memory are
- the executable code is expected to be longer
- the execution time will be longer
- the programmer is obliged to ensure that
v1
and v2
don’t cover the same memory area
-
The place where previous side effects have already occurred and none of next side effects have yet occurred is called the:
- sequence point
- local point
- compound point
- characteristic point
-
Choose the right phrase to make the statement true:
When a variable declaration starts with…
const int c...
- …a complier protects it from all indirect modifications
- …a pointer to such a variable cannot be taken in anyway
- …the only way of setting its value is to set though its initializer
- …it cannot be passed as an argument to any function
-
The two commonly used assembly language syntax conversions are named:
- Motorola and Intel
- AT&T and Bell
- AT&T and Intel
- Bell and Motorola
-
The following function:
int f(int i) {
if(i == 0) goto 123;
i++;
123:
return i;
}
- may cause a runtime error
- may cause a complier warning
- will cause a complier error
- is fully correct
-
Which of the following headers is valid?
int f(int T[2][2][static 2])
int f(int T[2][static 2][2])
int f(int T[static 2][2][2])
int f(int T[static 2][2][static 2])
-
The following function prototype:
int doit(const int * );
- is a promise that the argument won’t be modified during invocation
- requires the argument to be a
const
-qualified pointer
- requires the argument to be a pointer to a
const
-qualified value
- requires the argument to be a literal
-
One of the following statements is the false-which one?
- the
goto
jump may not lead to the inside of function
- the
goto
jump may lead to the outside of a function
- the
goto
jump may not lead to the outside of a compound statement
- the
goto
jump may not lead to the inside of a compound statement
-
The following snippet:
int v = 1;
const int *p = &v;
- may cause a compiler warning
- will cause a compiler error
- may cause a runtime error
- is fully correct
-
The following snippet:
int const v = 1;
int const * const p = &v;
- may cause a runtime error
- may cause a compiler warning
- is fully correct
- will cause a compiler error
-
The syntax used in the following snippet is called:
char s[2] ={[1] = 'a', [0] = 'b' };
- an enumerated initializer
- a designated initializer
- an indexed initializer
- a free initializer
-
The following snippet:
printf("%d\n", a * ++a);
- always outputs
9
- always outputs
3
- always outputs
6
- contains unsequenced side effects and consequently its output is implementation-dependent
-
To be successfully compiled, the following snippet must be processed by:
int f(int n, int *v){
int t[n\];
while(n){
t[n\] = v[n\];
n--;
}
return n;
}
- a C89 compliant compiler
- a C99 compliant compiler
- an ANSI C compliant compiler
- a C90 compliant compiler
-
The pointer named p
, declared in the following way, is:
char * const p = "";
- an invalid declaration
- a pointer to a
const
-qualified char
- a
const
-qualified pointer to a const
-qualified char
- a
const
-qualified pointer to a char
-
What should be placed instead of question marks to make the code work properly?
int main(void) {
if(setjmp(buf) ?? 0)
f();
else
puts("returned from long jump");
return 0;
}
-
Assuming the following f()
function’s declaration, identify the correct example of its invocation:
void f(char s[1]);
f("abc")
f("ab")
f("a")
f("")
-
The setjmp()
function behaves as if it has:
- on entry and one exit
- more than one entry and one exit
- one entry and more than one exit
- more than one entry and more than one exit
-
Select the false stetement:
- a
const-volatile
variable must not be explicitly modified in the code containing its declaretion
- a
const-volatile
variable must be explicitly modified by the background process
- a variable must not be
const
and volatile
at the same time
- a compiler will avoid storing a
const-volatile
variable in the CPU registers
-
The following function:
int f(int i){
int n = i;
if(n < 10) {
here:
i++;
goto here;
}
}
- incorrectly uses the
goto
statement and will cause a compilation error
- will cause a runtime error
- will cause an infinite loop
- is fully correct
-
Assuming the following f()
function’s declaration, identify the correct example of its invocation containing the shortest argument
void f(char s[static 3]);
f("abc")
f("ab")
f("")
f("a")